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); } } }
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); } }); }
/// <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); }