private void MessageHandler(BaseMessage message) { switch (message.Type) { case MessageFlag.HeartbeatMessage: { OnStatusReceived?.Invoke(new StatusUpdate( (uint)message.Flags[4], (uint)message.Flags[3], (uint)message.Flags[1], (uint)message.Flags[0], (uint)message.Flags[2] )); break; } case MessageFlag.ConsoleLogMessage: { OnTextReceived?.Invoke(message.Text); if (Interpret) { InterpretCommand(message.Text); } break; } } }
internal async Task ReadFromWebSocket() { var buffer = ArrayPool <byte> .Shared.Rent(0x1000); try { var received = await WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), _requestAborted); while (!received.CloseStatus.HasValue) { switch (received.MessageType) { case WebSocketMessageType.Text: OnTextReceived?.Invoke(this, new TextMessageEventArgs(Encoding.UTF8.GetString(buffer, 0, received.Count), received.EndOfMessage)); break; case WebSocketMessageType.Binary: OnBinaryReceived?.Invoke(this, new BinaryMessageEventArgs(new ArraySegment <byte>(buffer, 0, received.Count), received.EndOfMessage)); break; case WebSocketMessageType.Close: await WebSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", _requestAborted); break; } received = await WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), _requestAborted); } } catch (WebSocketException) { } catch (OperationCanceledException) { } finally { try { if (!new [] { WebSocketState.Aborted, WebSocketState.Closed }.Contains(WebSocket.State)) { await WebSocket.CloseAsync(WebSocketCloseStatus.InternalServerError, "", _requestAborted); } } catch (WebSocketException) { } OnClosed?.Invoke(this, EventArgs.Empty); WebSocket.Dispose(); } }
internal async Task ReadFromWebSocket() { var buffer = new byte[0x1000]; try { var received = await WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); while (!received.CloseStatus.HasValue) { switch (received.MessageType) { case WebSocketMessageType.Text: OnTextReceived?.Invoke(this, new TextMessageEventArgs(Encoding.UTF8.GetString(buffer, 0, received.Count), received.EndOfMessage)); break; case WebSocketMessageType.Binary: OnBinaryReceived?.Invoke(this, new BinaryMessageEventArgs(new ArraySegment <byte>(buffer, 0, received.Count), received.EndOfMessage)); break; case WebSocketMessageType.Close: await WebSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); break; } received = await WebSocket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); } } catch (WebSocketException) { } finally { OnClosed?.Invoke(this, EventArgs.Empty); await WebSocket.CloseAsync(WebSocketCloseStatus.InternalServerError, "", CancellationToken.None); WebSocket.Dispose(); } }
private async void ReadFromWebSocket() { var buffer = new byte[0x2000]; try { while (_ws.State == WebSocketState.Open) { var received = await _ws.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); switch (received.MessageType) { case WebSocketMessageType.Text: OnTextReceived?.Invoke(this, new TextMessageEventArgs(Encoding.UTF8.GetString(buffer, 0, received.Count), received.EndOfMessage)); break; case WebSocketMessageType.Binary: OnBinaryReceived?.Invoke(this, new BinaryMessageEventArgs(new ArraySegment <byte>(buffer, 0, received.Count), received.EndOfMessage)); break; case WebSocketMessageType.Close: await _ws.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); break; } } } catch (WebSocketException) { } finally { OnClosed?.Invoke(this, EventArgs.Empty); _ws.Dispose(); } }
protected override void onMessageReceived(Connection client, string message) { OnTextReceived?.Invoke(client, message); }