Example #1
0
        public static IHandler BuildHandler(
            WebSocketHttpRequest request,
            Action <string> onMessage,
            Action onClose,
            Action <byte[]> onBinary,
            Action <byte[]> onPing,
            Action <byte[]> onPong)
        {
            var version = GetVersion(request);

            switch (version)
            {
            case "76":
                return(Draft76Handler.Create(request, onMessage));

            case "7":
            case "8":
            case "13":
                return(Hybi13Handler.Create(request, onMessage, onClose, onBinary, onPing, onPong));

            case "policy-file-request":
                return(FlashSocketPolicyRequestHandler.Create(request));
            }

            throw new WebSocketException(WebSocketStatusCodes.UnsupportedDataType);
        }
Example #2
0
        public void Setup()
        {
            _request   = new WebSocketHttpRequest();
            _onClose   = delegate { };
            _onMessage = delegate { };

            _handler = Hybi13Handler.Create(_request, s => _onMessage(s), () => _onClose());
        }
Example #3
0
        public void ShouldCreateAnswerGuid()
        {
            const string exampleRequestKey = "dGhlIHNhbXBsZSBub25jZQ==";
            const string expectedResult    = "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=";

            var actual = Hybi13Handler.CreateResponseKey(exampleRequestKey);

            Assert.AreEqual(expectedResult, actual);
        }
Example #4
0
        public static IHandler BuildHandler(WebSocketHttpRequest request, Action <string> onMessage, Fleck2Extensions.Action onClose, Action <byte[]> onBinary)
        {
            var version = GetVersion(request);

            switch (version)
            {
            case "76":
                return(Draft76Handler.Create(request, onMessage));

            case "7":
            case "8":
            case "13":
                return(Hybi13Handler.Create(request, onMessage, onClose, onBinary));
            }

            throw new WebSocketException(WebSocketStatusCodes.UnsupportedDataType);
        }
Example #5
0
        public static IHandler BuildHandler(WebSocketHttpRequest request, Action <string> onMessage, Action onClose)
        {
            var version = GetVersion(request);

            switch (version)
            {
            case "76":
                return(Draft76Handler.Create(request, onMessage));

            case "7":
                return(Hybi13Handler.Create(request, onMessage, onClose));

            case "8":
                return(Hybi13Handler.Create(request, onMessage, onClose));

            case "13":
                return(Hybi13Handler.Create(request, onMessage, onClose));
            }

            throw new WebSocketException("Unsupported Request");
        }
Example #6
0
        public override void OnGet(HttpRequest request, HttpResponse response)
        {
            if (request.Upgrade == null || request.Upgrade.Trim().ToLower() != "websocket")
            {
                response.Send();
                return;
            }

            lock (objLock)
            {
                if (IsOnSurveillance)//已经用客户端连接了
                {
                    response.SetContent("False");
                    //response.SetContent(JsonConvert.SerializeObject(hit));
                    //response.SendOnLongConnetion();

                    response.SendWebsocketData();
                    response.TcpClient.Close();
                    StopSurveillance();
                    //return;
                }
            }
            lock (objLock)
            {
                IsOnSurveillance = true;
            }

            if (request.RestConvention != null)
            {
                Log.Debug(string.Format("准备开始布控任务 布控ID{0}", request.RestConvention));
                //根据p.restConvention(taskID)进行
                //SurveillanceTask task = ;
            }

            HitAlertService.response = response;
            int id = -1;

            try
            {
                id = Convert.ToInt32(request.RestConvention);
            }
            catch
            {
                return;
            }

            if (!Init(id))
            {//开启监控失败
                Log.Debug("开启布控任务失败");
                response.SetContent("False");
                response.SendWebsocketData();
                response.TcpClient.Close();
                IsOnSurveillance = false;
                return;
            }
            ;

            byte[]    buffer = new byte[1024];
            FrameType type   = FrameType.Continuation;

            while (type != FrameType.Close)
            {
                int length = 0;

                if (response.TcpClient.Connected)
                {
                    length = response.TcpClient.Client.Receive(buffer);//等待客户端的数据,主要等待客户端发送关闭数据
                }
                byte[] data = new byte[length];
                Array.Copy(buffer, data, length);
                type = Hybi13Handler.GetFrameType(new List <byte>(data));
                //FRSServerHttp.Server.Websocket.Hybi13Handler.ReceiveData(new List<byte>(data), readState);
            }

            StopSurveillance();
        }