Esempio n. 1
0
        private async Task Receive(WebSocket socket)
        {
            while (socket.State == WebSocketState.Open)
            {
                var result = await socket.ReceiveAsync(BufferSize._4096.GetArraySegment(out var buffer), CancellationToken.None);

                var payload = result.GetContent(buffer);

                if (result.MessageType == WebSocketMessageType.Text)
                {
                    await _socketHandler.Receive(socket, payload);
                }
                else if (result.MessageType == WebSocketMessageType.Close)
                {
                    await _socketHandler.OnDisconnected(socket);
                }
            }
        }
Esempio n. 2
0
        public async Task InvokeAsync(HttpContext context)
        {
            if (!context.WebSockets.IsWebSocketRequest)
            {
                return;
            }

            var socket = await context.WebSockets.AcceptWebSocketAsync();

            await _socketHandler.OnConnected(socket);

            await Recieve(socket, async (result, buffer) =>
            {
                if (result.MessageType == WebSocketMessageType.Text)
                {
                    await _webSocketRequestHandler.RecieveRequest(socket, result, buffer);
                }
                else if (result.MessageType == WebSocketMessageType.Close)
                {
                    await _socketHandler.OnDisconnected(socket);
                }
            });
        }
Esempio n. 3
0
        /// <summary>
        /// Executes the exi command
        /// </summary>
        /// <param name="webSocket"></param>
        /// <returns></returns>
        private async Task <string> ExecuteExitCommand(WebSocket webSocket)
        {
            await _socketHandler.OnDisconnected(webSocket);

            return(ServerMessageConstants.DISCONNECT_MESSAGE);
        }