/// <summary> /// On socket data received /// </summary> /// <param name="InteractingSocket"></param> /// <param name="SentData"></param> private void OnSocketMessage(IWebSocketConnection InteractingSocket, string SentData) { try { var ReceivedData = JsonConvert.DeserializeObject <WebEvent>(SentData); if (string.IsNullOrEmpty(ReceivedData.EventName)) { return; } GameClient InteractingClient = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(ReceivedData.UserId); if (InteractingClient == null) { return; } if (InteractingClient.LoggingOut) { return; } if (!this._webSockets.ContainsKey(InteractingSocket)) { return; } IWebEvent webEvent = null; if (_webEvents.TryGetValue(ReceivedData.EventName, out webEvent)) { webEvent.Execute(InteractingClient, ReceivedData.ExtraData, InteractingSocket); return; } log.Debug("Evento da Web não reconhecido: '" + ReceivedData.EventName + "'"); } catch (Exception ex) { if (ex is System.IO.IOException) { return; } this.OnSocketError(ex.Message); } }
/// <summary> /// Handles the event. /// </summary> /// <param name="Client"></param> /// <param name="EventName"></param> /// <param name="Data"></param> /// <returns></returns> public bool ExecuteWebEvent(GameClient Client, string EventName, string ReceivedData) { try { #region User client null checks if (ReceivedData.StartsWith("{")) { // JSON } else { if (!ReceivedData.Contains("bypass")) { if (Client == null) { return(false); } if (Client.LoggingOut) { return(false); } if (!this.SocketReady(Client)) { return(false); } } } if (string.IsNullOrEmpty(EventName)) { return(false); } #endregion #region Socket null checks IWebSocketConnection InteractingSocket = Client.GetRoleplay().WebSocketConnection; if (!this.SocketReady(InteractingSocket)) { return(false); } #endregion #region Execute event IWebEvent webEvent = null; if (this._webEvents.TryGetValue(EventName, out webEvent)) { if (!this._webSockets[InteractingSocket].Closing || !InteractingSocket.IsAvailable) { webEvent.Execute(Client, ReceivedData, InteractingSocket); } return(true); } #endregion } catch (Exception ex) { if (ex is System.IO.IOException) { return(false); } this.OnSocketError(ex.Message); } return(false); }