/// <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[] { "确认", "取消" }); }
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); } }
/// <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(); }