protected async void StreamRead() { while (theSocket.State == WebSocketState.Open) { var res = await theSocket.ReceiveAsync(new ArraySegment <byte>(DataBuffer), System.Threading.CancellationToken.None); if (res.MessageType == WebSocketMessageType.Close) { await theSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "You told me to close", System.Threading.CancellationToken.None); StreamStatusEvent?.Invoke("Disconnected"); break; } else { if (!ProcessDataBuffer(res.Count)) { await theSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, "Something happened on my end", System.Threading.CancellationToken.None); StreamStatusEvent?.Invoke("Disconnected"); break; } } } }
protected void StreamRead(IAsyncResult ar) { try { int offset = 0; int prevoffset = offset; int bytes = theStream.EndRead(ar); if (ProcessDataBuffer(bytes)) { theStream.BeginRead(DataBuffer, DataReadOffset, BUFFER_SIZE - DataReadOffset, StreamRead, this); } else { StreamStatusEvent?.Invoke("Disconnected"); } } catch (Exception e) { Console.WriteLine(e.ToString()); StreamStatusEvent?.Invoke("Disconnected"); } }