public async Task StartAsync <T>() where T : IWebSocketClientHandler { if (!(Config is DotNettyClientConfig webSocketClientConfig)) { throw new MateralWebSocketClientException("Config类型必须派生于DotNettyClientConfig"); } WebSocketClientHandshaker webSocketClientHandshaker = WebSocketClientHandshakerFactory.NewHandshaker(webSocketClientConfig.UriBuilder.Uri, WebSocketVersion.V13, null, true, new DefaultHttpHeaders()); var handler = ConvertManager.GetDefaultObject <T>(webSocketClientHandshaker); if (!(handler is DotNettyClientHandler clientHandler)) { throw new MateralWebSocketClientException("Handler类型必须派生于DotNettyClientHandler"); } _clientHandler = clientHandler; _clientHandler.SetClient(this); await StartAsync(); }
public void TestDecoDotNettyClientHandler() { object result = null; var mockCallBack = new Mock <IClientCallBack>(); mockCallBack.Setup(i => i.CallBack(It.IsAny <Response>())) .Callback <Response>(i => { result = i; }); var context = new Mock <IChannelHandlerContext>(); var handler = new DotNettyClientHandler(mockCallBack.Object); Assert.True(handler.IsSharable); handler.ChannelRead(context.Object, new Response()); Assert.NotNull(result); Assert.IsType <Response>(result); }