Exemplo n.º 1
0
        /// <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);
            }
        }
Exemplo n.º 2
0
        /// <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);
        }