コード例 #1
0
        /// <summary>
        /// 给聊天室里的人都发消息
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reader"></param>
        static void OnSendMessage(Session session, PacketReader reader)
        {
            var message = reader.ReadUTF8String();

            if (string.IsNullOrEmpty(message))
            {
                //  空消息
                return;
            }

            //  广播给所有在线的用户
            var buffer = MessagePackageManager.WriteSendMessageResult(message);

            foreach (var ss in sessions)
            {
                ss.Client.SendPackage(buffer);
            }
        }
コード例 #2
0
        /// <summary>
        /// 登录服务器
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reader"></param>
        static void OnLogin(Session session, PacketReader reader)
        {
            var packet = MessagePackageManager.ReadLogin(reader);

            if (string.IsNullOrEmpty(packet.UserName))
            {
                Logs.Error("连接的用户名是空");
                session.Client.CloseSocket();
            }

            if (packet.Pwd != "123")
            {
                Logs.Error("用户名 {0} 速度的密码错误", packet.UserName);
                var buffer = MessagePackageManager.WriteLoginResult(LoginResult.PwdError);
                session.Client.SendPackage(buffer);
                return;
            }

            //  如果玩家之前登录过,则把之前的客户端踢下线
            var exists = sessions.FirstOrDefault(o => o.Name == packet.UserName);

            if (exists != null)
            {
                exists.IsLogin = false;
                sessions.Remove(exists);
                exists.Client.CloseSocket();
            }

            //  登录完成
            session.IsLogin = true;
            nologinSessions.Remove(session);
            sessions.Add(session);

            session.Name  = packet.UserName;
            session.Pwd   = packet.Pwd;
            session.BizId = clientIdSeq++;

            var buffer2 = MessagePackageManager.WriteLoginResult(LoginResult.Success);

            session.Client.SendPackage(buffer2);
        }
コード例 #3
0
        /// <summary>
        /// 给聊天室里的某人单独发消息
        /// </summary>
        /// <param name="session"></param>
        /// <param name="reader"></param>
        static void OnSendPrivateMessage(Session session, PacketReader reader)
        {
            var userName = reader.ReadUTF8String();
            var message  = reader.ReadUTF8String();

            if (message == null)
            {
                return;
            }

            var target = sessions.FirstOrDefault(o => o.Name == userName);

            if (target == null)
            {
                return;
            }

            var buffer = MessagePackageManager.WriteSendPrivateMessageResult(session.Name, message);

            target.Client.SendPackage(buffer);
        }