/// <summary> /// Event handler for WebSocket data. /// </summary> /// <param name="sender">The sender object.</param> /// <param name="e">Event arguments.</param> private void OnSocketData(object sender, WebSocketEventArgs e) { try { BaseFrame frame = this.serializer.Deserialize(e.BinaryData); if (this.OnFrameReceived != null) { this.OnFrameReceived(this, new FrameEventArgs(frame)); } try { if (frame is DataFrame) { this.ProcessDataFrame((DataFrame)frame); } else if (frame is ControlFrame) { this.ProcessControlFrame((ControlFrame)frame); } else { throw new InvalidOperationException("Unsupported frame type"); } } catch (Exception streamError) { if (streamError is SMProtocolExeption || this.OnStreamError == null) { throw; } this.OnStreamError(this, new StreamErrorEventArgs(this.streamsStore.GetStreamById(frame.StreamId), streamError)); } } catch (Exception protocolError) { if (this.OnError != null) { this.OnError(this, new SMProtocolErrorEventArgs(protocolError)); } } }
private void OnMessage(WebSocketEventArgs evt) { Pusher.Log("Pusher : OnMessage : ", evt.TextData); JsonData paramss = JSON.parse(evt.TextData); if (paramss.ContainsKey("socket_id") && paramss["socket_id"].ToString() == this.socket_id) return; // Try to parse the event data unless it has already been decoded if (paramss["data"] is string) { paramss["data"] = Pusher.Parser((string)paramss["data"]); } Pusher.Log("Pusher : received message : ", paramss); if (paramss.ContainsKey("channel")) this.SendLocalEvent((string)paramss["event"], paramss["data"], (string)paramss["channel"]); else this.SendLocalEvent((string)paramss["event"], paramss["data"]); }