/// <summary> /// Signal Live event on file. /// </summary> /// <param name="fileLiveEvent">The file and share</param> private void OnFileEvent(LiveFileEventInfo fileLiveEvent) { var copyLiveFileEvent = LiveFileEvent; if (copyLiveFileEvent != null) { copyLiveFileEvent(fileLiveEvent); } }
/// <summary> /// On WebSocket new message received. /// </summary> private void WebSocket_OnMessage(object sender, MessageEventArgs e) { string eventdata = e.Data; // Base JSON message format, except for "ping" message. //{ // "type":"the message type" //} //System.Diagnostics.Debug.WriteLine("WebSocket_OnMessage event: [" + eventdata + "]"); try { // Got a "ping" message from Live API if (eventdata == "ping") { // Send "pong" message, we are still alive. _webSocket.Send("pong"); LastReceived = DateTime.Now; } else if (eventdata == "pong") { // Got a "pong" message for ower own "ping" message. LastReceived = DateTime.Now; } else { try { JObject jsonResponse = JObject.Parse(eventdata); LiveFileEventInfo fileLiveEvent = null; // What type of Live event? switch (jsonResponse["type"].ToString()) { case "download": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break; // Download event. case "storagelimit": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break; // Storagelimit event. case "filestat": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break; // Filestatus event. case "violatedterms": fileLiveEvent = JsonConvert.DeserializeObject <LiveFileEventInfo>(eventdata); break; // Violated terms event. } if (fileLiveEvent != null) { LastReceived = DateTime.Now; OnFileEvent(fileLiveEvent); } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("WebSocket_OnMessage, Json exception: " + ex.GetType() + ", " + ex.Message); } } } catch (Exception ex) { System.Diagnostics.Debug.WriteLine("WebSocket_OnMessage, handling exception: " + ex.GetType() + ", " + ex.Message); } Action <GettLive, string> copyOnMessage = OnMessage; if (copyOnMessage != null) { copyOnMessage(this, eventdata); } }