public void TestReceiveFour_Full() { // 0xC2 = 1100 0010 // FRRR opco // ISSS de // NVVV // 123 var buffer = new byte[] { 0xC2, 10 }; var payload = new DummyDataStream(10); var header = new ByteArray(buffer); var websocket = new BaseWebSocket(logger); int called = 0; websocket.MessageParsed += delegate(object sender, WebSocketMessage msg) { ++called; Assert.True(msg.FIN); Assert.True(msg.RSV1); Assert.False(msg.RSV2); Assert.False(msg.RSV3); Assert.Equal(WebSocketMessage.OpcodeType.Binary, msg.Opcode); Assert.Equal(10, msg.PayloadLength); Assert.False(msg.MASK); }; var binMsg = new StreamList(); binMsg.Add(header); binMsg.Add(payload); binMsg.Add(binMsg); binMsg.Add(binMsg); websocket.Receive(binMsg); Assert.Equal(4, called); }
/// <summary> /// 构建函数 /// </summary> /// <param name="WebSocket">WebSocket句柄</param> private Api(BaseWebSocket WebSocket) { if (WebSocket != null) { this.WebSocket = WebSocket; } else { throw new WebSocketException(-1, "传入的WebSocket不可为空"); } }
internal static Api Create(BaseWebSocket WebSocket) { try { Api api = new Api(WebSocket); Cache.Set($"API{AppDomain.CurrentDomain.Id}", api); Task.Run(() => { Thread.Sleep(5000); if (!BaseWebSocket.IsCheckVersion) { Event.CheckVersion(); } }); return(api); } catch (WebSocketException e) { Logger.Warning("警告,传入的WebSocket有误。错误代码: " + e.ErrorCode); } return(null); }