Example #1
0
        /// <summary>
        /// Read and process Tell message
        /// </summary>
        /// <param name="client">
        /// Client sending
        /// </param>
        /// <param name="packet">
        /// Packet data
        /// </param>
        public static void Read(Client client, byte[] packet)
        {
            PacketReader reader = new PacketReader(ref packet);

            reader.ReadUInt16();
            reader.ReadUInt16();
            uint   playerId = reader.ReadUInt32();
            string message  = reader.ReadString();

            client.Server.Debug(client, "{0} >> Tell: PlayerId: {1}", client.Character.characterName, playerId);
            reader.Finish();
            if (client.Server.ConnectedClients.ContainsKey(playerId))
            {
                Client tellClient = (Client)client.Server.ConnectedClients[playerId];
                if (!tellClient.KnownClients.Contains(client.Character.characterId))
                {
                    byte[] pname = PlayerName.New(client, client.Character.characterId);
                    tellClient.Send(pname);
                    tellClient.KnownClients.Add(client.Character.characterId);
                }

                byte[] pgroup = MsgPrivateGroup.Create(client.Character.characterId, message, string.Empty);
                tellClient.Send(pgroup);
            }
            else
            {
                byte[] sysmsg = MsgSystem.Create("Player not online.");
                client.Send(sysmsg);
            }
        }
 private void Func_Exit_Click(object sender, RoutedEventArgs e)
 {
     MsgSystem.Show((s, r) => {
         if (r.CheckIndex == 0)
         {
             MainWindow.reference.Close();
         }
     }, "确认", "确认要退出?", buttonname: new string[] { "确认", "取消" });
 }
 private void Func_ChangeUser_Click(object sender, RoutedEventArgs e)
 {
     MsgSystem.Show((s, r) => {
         if (r.CheckIndex == 0)
         {
             MainWindow.reference.setContent(LoginPage.Get());
             User.Get().authentication = null;
         }
     }, "确认", "确认要退出登录?", buttonname: new string[] { "确认", "取消" });
 }
Example #4
0
        private void OnPlayerInfo(GameClientPacket packet)
        {
            if (Name != null)
            {
                return;
            }
            Name = packet.ReadUnicode(20);

            if (string.IsNullOrEmpty(Name))
            {
                LobbyError(Messages.ERR_NO_NAME);
            }
            IsAuthentified = CheckAuth();
            if (IsAuthentified)
            {
                ServerMessage(MsgSystem.getMessage(Name, 0), PlayerType.White);
            }
        }
Example #5
0
        /// <summary>
        /// Read and process Tell message
        /// </summary>
        /// <param name="client">
        /// Client sending
        /// </param>
        /// <param name="packet">
        /// Packet data
        /// </param>
        public static void Read(Client client, byte[] packet)
        {
            PacketReader reader = new PacketReader(ref packet);

            reader.ReadUInt16();
            reader.ReadUInt16();
            uint   playerId = reader.ReadUInt32();
            string message  = reader.ReadString();

            client.Server.Debug(client, "{0} >> Tell: PlayerId: {1}", client.Character.characterName, playerId);
            reader.Finish();
            if (client.ChatServer().ConnectedClients.ContainsKey(playerId))
            {
                Client tellClient = (Client)client.ChatServer().ConnectedClients[playerId];
                if (!tellClient.KnownClients.Contains(client.Character.CharacterId))
                {
                    byte[] pname = PlayerName.Create(client, client.Character.CharacterId);
                    tellClient.Send(pname);
                    tellClient.KnownClients.Add(client.Character.CharacterId);

                    // TODO: Check if status bytes are correct even for offline chars
                    client.Send(
                        BuddyOnlineStatus.Create(
                            (uint)tellClient.Character.CharacterId,
                            (uint)OnlineDao.IsOnline((int)tellClient.Character.CharacterId).Online,
                            new byte[] { 0x00, 0x01, 0x00 }));
                }

                byte[] pgroup = MsgPrivateGroup.Create(client.Character.CharacterId, message, string.Empty);
                tellClient.Send(pgroup);
            }
            else
            {
                byte[] sysmsg = MsgSystem.Create("Player not online.");
                client.Send(sysmsg);
            }
        }
        /**
         * 自定义api地址
         * */
        //private static readonly String api = "http://api.cn.ronghub.com";

        static void Main(String[] args)
        {
            RongCloud rongCloud = RongCloud.GetInstance(appKey, appSecret);
            //自定义 api 地址方式
            //RongCloud rongCloud = RongCloud.getInstance(appKey, appSecret,api);

            Private Private = rongCloud.message.msgPrivate;
            // TODO
            MsgSystem system = rongCloud.message.system;

            methods.messages.group.Group group = rongCloud.message.group;
            Chatroom   chatroom   = rongCloud.message.chatroom;
            Discussion discussion = rongCloud.message.discussion;
            History    history    = rongCloud.message.history;

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#send
             *
             * 发送系统消息
             *
             */
            String[]      targetIds     = { "uPj70HUrRSUk-ixtt7iIGc" };
            SystemMessage systemMessage = new SystemMessage()
            {
                SenderId         = "Vu-oC0_LQ6kgPqltm_zYtI",
                TargetId         = targetIds,
                ObjectName       = txtMessage.GetType(),
                Content          = txtMessage,
                PushContent      = ".NET this is a push system",
                PushData         = "{'pushData':'.NET hello'}",
                IsPersisted      = 0,
                IsCounted        = 0,
                ContentAvailable = 0
            };

            ResponseResult result = rongCloud.message.system.Send(systemMessage);

            Console.WriteLine("send system message:  " + result.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#sendTemplate
             *
             * 发送系统模板消息方法
             *
             */
            StreamReader file = null;

            try
            {
                file = System.IO.File.OpenText("jsonsource/message/TemplateMessage.json");
                TemplateMessage template = JsonConvert.DeserializeObject <TemplateMessage>(file.ReadToEnd());
                ResponseResult  messagePublishTemplateResult = system.SendTemplate(template);

                Console.WriteLine("send systemTemplate message:  " + messagePublishTemplateResult.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                file.Close();
            }


            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/system.html#sendTemplate
             *
             * 发送系统模板消息方法
             *
             */
            BroadcastMessage message = new BroadcastMessage()
            {
                SenderId   = "Vu-oC0_LQ6kgPqltm_zYtI",
                ObjectName = txtMessage.GetType(),
                Content    = txtMessage,
                Os         = "Android"
            };

            ResponseResult broadcastResult = rongCloud.message.system.Broadcast(message);

            Console.WriteLine("send broadcast:  " + broadcastResult.ToString());


            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#send
             *
             * 发送单聊消息
             * */
            PrivateMessage privateMessage = new PrivateMessage()
            {
                SenderId         = "Vu-oC0_LQ6kgPqltm_zYtI",
                TargetId         = targetIds,
                ObjectName       = txtMessage.GetType(),
                Content          = txtMessage,
                PushContent      = ".NET this is a push private",
                PushData         = "{\"pushData\":\".NET hello\"}",
                VerifyBlacklist  = 0,
                IsPersisted      = 0,
                IsCounted        = 0,
                ContentAvailable = 0,
                IsIncludeSender  = 0
            };

            ResponseResult privateResult = Private.Send(privateMessage);

            Console.WriteLine("send private message:  " + privateResult.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#sendTemplate
             *
             * 发送单聊模板消息方法
             */
            try
            {
                file = System.IO.File.OpenText("jsonsource/message/TemplateMessage.json");
                TemplateMessage template = JsonConvert.DeserializeObject <TemplateMessage>(file.ReadToEnd());
                ResponseResult  messagePublishTemplateResult = Private.SendTemplate(template);

                Console.WriteLine("send privateTemplate message:  " + messagePublishTemplateResult.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            finally
            {
                file.Close();
            }

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/private.html#recall
             *
             * 撤回单聊消息
             * */
            RecallMessage recallMessage = new RecallMessage()
            {
                SenderId = "0fn8TiuHTUgjrZ1QJ8o50M",
                TargetId = "qHPBAoUS6DmEBtJH72RSDi",
                UId      = "5H6P-CGC6-44QR-VB3R",
                SentTime = "1519444243981"
            };

            ResponseResult recallPrivateResult = (ResponseResult)Private.Recall(recallMessage);

            Console.WriteLine("recall private:  " + recallPrivateResult.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#send
             *
             * 群组消息
             * */
            GroupMessage groupMessage = new GroupMessage()
            {
                SenderId         = "Vu-oC0_LQ6kgPqltm_zYtI",
                TargetId         = new string[] { "STRe0shISpQlSOBvek1FfU" },
                ObjectName       = txtMessage.GetType(),
                Content          = txtMessage,
                PushContent      = "this is a push",
                PushData         = "{\"pushData\":\"hello\"}",
                IsPersisted      = 0,
                IsCounted        = 0,
                IsIncludeSender  = 0,
                ContentAvailable = 0
            };

            ResponseResult groupResult = group.Send(groupMessage);

            Console.WriteLine("send Group message:  " + groupResult.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#recall
             *
             * 群组撤回消息
             * */
            recallMessage = new RecallMessage()
            {
                SenderId = "sea9901",
                TargetId = "markoiwm",
                UId      = "5GSB-RPM1-KP8H-9JHF",
                SentTime = "1507778882124"
            };

            ResponseResult recallMessageResult = (ResponseResult)group.Recall(recallMessage);

            Console.WriteLine("send recall group message:  " + recallMessageResult.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/group.html#sendMention
             *
             * 群组@消息
             * */
            //要@的人
            String[] mentionIds = { "uPj70HUrRSUk-ixtt7iIGc", "Vu-oC0_LQ6kgPqltm_zYtI" };

            MentionedInfo mentionedInfo = new MentionedInfo(1, mentionIds, "");
            //@内容
            MentionMessageContent content = new MentionMessageContent(txtMessage, mentionedInfo);

            MentionMessage mentionMessage = new MentionMessage()
            {
                SenderId         = "Vu-oC0_LQ6kgPqltm_zYtI",
                TargetId         = new string[] { "STRe0shISpQlSOBvek1FfU" },
                ObjectName       = txtMessage.GetType(),
                Content          = content,
                PushContent      = "this is a push",
                PushData         = "{\"pushData\":\"hello\"}",
                IsPersisted      = 0,
                IsCounted        = 0,
                IsIncludeSender  = 0,
                ContentAvailable = 0
            };
            ResponseResult mentionResult = rongCloud.message.group.SendMention(mentionMessage);

            Console.WriteLine("group mention result:  " + mentionResult.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/discussion.html#send
             *
             * 发送讨论组消息
             * */
            String[]          discussionIds     = { "lijhGk87", "lijhGk88" };
            DiscussionMessage discussionMessage = new DiscussionMessage()
            {
                SenderId         = "JuikH78ko",
                TargetId         = discussionIds,
                ObjectName       = txtMessage.GetType(),
                Content          = txtMessage,
                PushContent      = "this is a push",
                PushData         = "{\"pushData\":\"hello\"}",
                IsPersisted      = 0,
                IsCounted        = 0,
                IsIncludeSender  = 0,
                ContentAvailable = 0
            };

            ResponseResult discussionResult = discussion.Send(discussionMessage);

            Console.WriteLine("send discussion message:  " + discussionResult.ToString());

            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/discussion.html#recall
             *
             * 撤回讨论组消息
             * */
            recallMessage = new RecallMessage()
            {
                SenderId = "sea9901",
                TargetId = "IXQhMs3ny",
                UId      = "5GSB-RPM1-KP8H-9JHF",
                SentTime = "1519444243981"
            };
            ResponseResult recallDiscussionResult = (ResponseResult)discussion.Recall(recallMessage);

            Console.WriteLine("recall discussion message:  " + recallDiscussionResult.ToString());


            /**
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/chatroom.html#send
             *
             * 聊天室消息
             * */

            String[] chatroomIds = { "OIBbeKlkx" };

            CustomTxtMessage ctm             = new CustomTxtMessage("hello world");
            ChatroomMessage  chatroomMessage = new ChatroomMessage()
            {
                SenderId   = "aP9uvganV",
                TargetId   = chatroomIds,
                Content    = ctm,
                ObjectName = ctm.GetType()
            };

            ResponseResult chatroomResult = chatroom.Send(chatroomMessage);

            Console.WriteLine("send chatroom message:  " + chatroomResult.ToString());


            /**
             *
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/chatroom.html#broadcast
             *
             * 聊天室广播消息
             *
             * 此功能需开通专有服务: http://www.rongcloud.cn/deployment#overseas-cloud
             *
             * */
            chatroomMessage = new ChatroomMessage()
            {
                SenderId   = "aP9uvganV",
                Content    = txtMessage,
                ObjectName = txtMessage.GetType()
            };


            ResponseResult chatroomBroadcastresult = chatroom.Broadcast(chatroomMessage);

            Console.WriteLine("send chatroom broadcast message:  " + chatroomBroadcastresult.ToString());


            /**
             *
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/history.html#get
             *
             * 获取历史消息日志文件
             *
             * */

            HistoryMessageResult historyMessageResult = history.Get("2019011711");

            Console.WriteLine("get history  message:  " + historyMessageResult.ToString());

            /**
             *
             * API 文档: http://www.rongcloud.cn/docs/server_sdk_api/message/history.html#get
             *
             * 删除历史消息日志文件
             *
             * */
            ResponseResult removeHistoryMessageResult = history.Remove("2018030210");

            Console.WriteLine("remove history  message:  " + removeHistoryMessageResult.ToString());
            Console.ReadLine();
        }