Esempio n. 1
0
        public bool ReadToObject(string json)
        {
            bool           isJsonData = false;
            BaseSocketData readData   = JSONConvert.JsonToObject <BaseSocketData>(json);

            if (readData != null)
            {
                this.Pid   = readData.Pid;
                this.Data  = readData.Data;
                isJsonData = true;
            }
            return(isJsonData);
        }
        public LocalSessionManager()
        {
            Receive <BaseSocketData>(command =>
            {
                if (command.Pid.Equals(WSMsg.LoginInfo))
                {
                    LoginInfo loginInfo = JSONConvert.JsonToObject <LoginInfo>(command.Data);
                    if (loginInfo != null)
                    {
                        // 인증된 사용자만이 채팅방 개설가능....
                        if (loginInfo.session.Channel.Contains("test") && loginInfo.session.ClientId.Contains("psmon"))
                        {
                            string SessionKey           = $"{loginInfo.session.Channel}_{loginInfo.session.ClientId}";
                            SessionSockInfo sessionSock = new SessionSockInfo
                            {
                                Session      = loginInfo.session,
                                SockID       = command.SocketId,
                                SockHandeler = command.SocketHandler as CSChatHandler
                            };

                            if (sessionList.ContainsKey(SessionKey))
                            {
                                SessionSockInfo sesionSocket = GetSockInfo(SessionKey);
                                sesionSocket.SockHandeler.SendMessageAsync(sesionSocket.SockID, "duplicated login - logout");
                            }
                            AddSockInfo(SessionKey, sessionSock).SockHandeler.SendMessageAsync(command.SocketId, "auth-OK");
                        }
                    }
                }
                else if (command.Pid.Equals(WSMsg.DisconnectInfo))
                {
                }
            });

            Receive <UserChatData>(command =>
            {
                string SessionKey = $"{command.Session.Channel }_{command.Session.ClientId}";
                if (sessionList.ContainsKey(SessionKey))
                {
                    SessionSockInfo sesionSocket = GetSockInfo(SessionKey);
                    sesionSocket.SockHandeler.SendMessageAsync(sesionSocket.SockID, command.Message);
                }
            });
        }