Пример #1
0
    public void SndChat(MsgPack pack)
    {
        SndChat    data = pack.msg.sndChat;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        // 任务进度数据更新
        PshTaskPrgs pshTaskPrgs = TaskSys.Instance.GetTaskPrgs(pd, 6);

        GameMsg msg = new GameMsg
        {
            cmd     = (int)CMD.PshChat,
            pshChat = new PshChat
            {
                name = pd.name,
                chat = data.chat
            },
            pshTaskPrgs = pshTaskPrgs
        };

        // 广播所有在线客户端
        List <ServerSession> lst = cacheSvc.GetOnlineServerSessions();

        // 重点优化,因为要给很多个客户端发送相同的数据,如果重复地序列化成二进制发送会重复浪费cpu,所以可以先序列化成二进制再重复发送
        byte[] bytes = PENet.PETool.PackNetMsg(msg);

        for (int i = 0; i < lst.Count; i++)
        {
            lst[i].SendMsg(bytes);
        }
    }
Пример #2
0
    public void SndChat(MsgPack pack)
    {
        SndChat    data = pack.msg.sndChat;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        //任务进度数据更新
        TaskSys.Instance.CalcTaskPrgs(pd, 6);

        GameMsg msg = new GameMsg {
            cmd     = (int)CMD.PshChat,
            pshChat = new PshChat {
                name = pd.name,
                chat = data.chat
            }
        };

        //广播所有在线客户端
        List <ServerSession> lst = cacheSvc.GetOnlineServerSessions();

        byte[] bytes = PENet.PETool.PackNetMsg(msg);
        for (int i = 0; i < lst.Count; i++)
        {
            lst[i].SendMsg(bytes);
        }
    }
Пример #3
0
    public void SndChat(MsgPack pack)
    {
        SndChat    data = (SndChat)pack.msg;
        PlayerData pd   = cacheSvc.GetPlayerDataBySession(pack.session);

        //任务进度数据更新
        TaskSys.Instance.CalcTaskPrgs(pd, 6);

        SCPacketBase msg = new PshChat {
            Name = pd.Name,
            Chat = data.Chat
        };

        //广播所有在线客户端
        List <ClientSocket> lst = cacheSvc.GetOnlineServerSessions();

        //byte[] bytes = KDNet.KDTool.PackNetMsg(msg);
        for (int i = 0; i < lst.Count; i++)
        {
            lst[i].SendMsg(msg);
        }
    }