public NetBase() { Port = "8888"; Timer timer = new Timer(OnTimer, new ServerState(), 5000, 30000); OnData += new OnDataHandler(HandleNewData); OnConnection += new OnConnectionHandler(HandleNewConnection); }
async void BeginReceiveMessages() { isReceiving = true; while (isReceiving && client.State == WebSocketState.Open) { WebSocketReceiveResult receiveResult = null; using (var ms = new MemoryStream()) { do { receiveResult = await client.ReceiveAsync(clientBuffer, CancellationToken.None); ms.Write(clientBuffer.Array, clientBuffer.Offset, receiveResult.Count); }while (!receiveResult.EndOfMessage); // close socket if requested by server, return if (receiveResult.MessageType == WebSocketMessageType.Close) { await CloseSocket(receiveResult.CloseStatusDescription); return; } if (receiveResult.MessageType == WebSocketMessageType.Binary) { ProcessBinaryMessage(); } else if (receiveResult.MessageType == WebSocketMessageType.Text) { var tick = DeserializeJsonToObject(ms); OnDataHandler?.HandleData(tick); } } T DeserializeJsonToObject(MemoryStream ms) { //using (var ms = new MemoryStream(receiveBuffer, 0, messageLength, false)) using (var sr = new StreamReader(ms, readEncoding, false)) using (var reader = new JsonTextReader(sr)) { return(jsonSerializer.Deserialize <T>(reader)); } } void ProcessBinaryMessage() { } } }