Esempio n. 1
0
        /// <summary>
        /// The connect socket.
        /// </summary>
        /// <param name="socket">
        /// The socket.
        /// </param>
        /// <param name="userData">
        /// The userData.
        /// </param>
        /// <param name="server">
        /// The server.
        /// </param>
        private void ConnectSocket(IWebSocketConnection socket, UserModel userData, IServer server)
        {
            server.ConnectedSockets.Add(socket, userData);
            var authMessage = new Payloads.Server.AuthMessage()
            {
                Message   = "SUCCESS",
                UsersList = server.ConnectedSockets.Values.Select(user => user.Login).ToArray()
            };

            socket.Send(authMessage);

            var userConnectionMessage = new Payloads.Server.UserConnectionMessage()
            {
                Login  = server.ConnectedSockets[socket].Login,
                Status = "CONNECT"
            };

            server.SendToAllExcludeOne(userConnectionMessage, exclude: socket);
        }
Esempio n. 2
0
        /// <summary>
        /// The authorize.
        /// </summary>
        /// <param name="socket">
        /// The socket.
        /// </param>
        /// <param name="webSocketMessage">
        /// The web socket message.
        /// </param>
        /// <param name="server">
        /// The server.
        /// </param>
        private void Authorize(IWebSocketConnection socket, string webSocketMessage, IServer server)
        {
            try
            {
                var data =
                    Newtonsoft.Json.JsonConvert.DeserializeObject <WebSocketMessage <Payloads.Client.AuthMessage> >(webSocketMessage);

                var tokenData = AppContext.Instance.UsersTokens.FirstOrDefault(userToken => data.Payload.Token == userToken.Token);

                if (tokenData != null)
                {
                    var userData = AppContext.Instance.Users.FirstOrDefault(user => user.Id == tokenData.UserId);
                    if (userData != null && !server.ConnectedSockets.ContainsValue(userData))
                    {
                        ConnectSocket(socket, userData, server);
                    }
                    else
                    {
                        var authMessage = new Payloads.Server.AuthMessage()
                        {
                            Message = "ERROR.ALREADY_CONNECTED"
                        };
                        socket.Send(authMessage);
                        DisconnectSocket(socket, server);
                    }
                }
                else
                {
                    var authMessage = new Payloads.Server.AuthMessage()
                    {
                        Message = "ERROR.NOT_FOUND"
                    };
                    socket.Send(authMessage);
                    DisconnectSocket(socket, server);
                }
            }
            catch (System.Exception e)
            {
                System.Console.WriteLine(e.ToString());
            }
        }