コード例 #1
0
        private void _WebSocket_OnMessage(object sender, MessageEventArgs e)
        {
            _lastReceivedTime = DateTime.UtcNow;
            string data = "";

            if (e.IsBinary)
            {
                data = GZipDecompresser.Decompress(e.RawData);
            }
            else
            {
                data = System.Text.Encoding.Default.GetString(e.RawData);
            }

            var pingMessage = JsonConvert.DeserializeObject <PingMessage>(data);

            if (pingMessage != null && pingMessage.ping != 0)
            {
                _logger.Log(Log.LogLevel.Trace, $"WebSocekt received data, ping={pingMessage.ping}");
                string pongData = $"{{\"pong\":{pingMessage.ping}}}";
                _WebSocket.Send(pongData);
                _logger.Log(Log.LogLevel.Trace, $"WebSocket replied data, pong={pingMessage.ping}");
            }
            else
            {
                OnResponseReceived?.Invoke(data);
            }
        }
コード例 #2
0
        private void _WebSocket_OnMessage(object sender, MessageEventArgs e)
        {
            _lastReceivedTime = DateTime.UtcNow;

            string data = e.Data;

            if (e.IsBinary)
            {
                data = GZipDecompresser.Decompress(e.RawData);
            }

            dynamic json   = JToken.Parse(data);
            string  action = json.action;
            string  ch     = json.ch;

            switch (action)
            {
            case "ping":     // Receive Ping message
            {
                var pingMessageV2 = JsonConvert.DeserializeObject <PingMessageV2>(data);
                if (pingMessageV2 != null && pingMessageV2.data != null && pingMessageV2.data.ts != 0)
                {
                    long ts = pingMessageV2.data.ts;

                    _logger.Log(Log.LogLevel.Trace, $"WebSocket received data, ping={ts}");

                    string pongData = $"{{\"action\": \"pong\", \"data\": {{\"ts\":{ts} }} }}";
                    _WebSocket.Send(pongData);

                    _logger.Log(Log.LogLevel.Trace, $"WebSocket replied data, pong={ts}");
                }
                break;
            }

            case "req":     // Receive authentication response
            {
                if ("auth".Equals(ch))
                {
                    var response = JsonConvert.DeserializeObject <WebSocketV2AuthResponse>(data);
                    OnAuthenticationReceived?.Invoke(response);
                }
                else
                {
                    _logger.Log(Log.LogLevel.Info, $"WebSocket received data, resp={data}");

                    OnDataReceived?.Invoke(data);
                }
                break;
            }

            case "sub":     // Receive subscription response
            case "push":    // Receive data response
            {
                _logger.Log(Log.LogLevel.Info, $"WebSocket received data, resp={data}");

                OnDataReceived?.Invoke(data);

                break;
            }
            }
        }