예제 #1
0
        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);
        }
예제 #2
0
 /// <summary>
 /// 构建函数
 /// </summary>
 /// <param name="WebSocket">WebSocket句柄</param>
 private Api(BaseWebSocket WebSocket)
 {
     if (WebSocket != null)
     {
         this.WebSocket = WebSocket;
     }
     else
     {
         throw new WebSocketException(-1, "传入的WebSocket不可为空");
     }
 }
예제 #3
0
 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);
 }