private void Read(byte[] buffer) { if (!IsAvailable) { return; } Socket.Receive(buffer, r => { if (r <= 0) { Logger.Debug("0 bytes read. Closing."); CloseSocket(); return; } Logger.Debug(r + " bytes read"); var readBytes = buffer.Take(r); if (SocketHandler != null) { SocketHandler.Receive(readBytes); } Read(buffer); }, HandleReadError, 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); } } }