Openfire MultiUserChat 多用户聊天 ---创建聊天室
用户发送查询iq消息后,再发送presence消息创建聊天室:
处理的时序图如下:
1. 用户发送的presence 消息被路由到ChatService中处理。
2.ChatService中保存有一张本地聊天室中所有用户的视图,如果用户之前已经加入过聊天室,可以从这里快速地查找到相应的信息。
第一次创建聊天室时是不存在相应的用户的。所以会在这里创建,并加入到视图中。
3.新建MUC用户后就将此消息交由他来处理,每个MUC用户会保持一张自己所在room 和相应角色(role) 的对应关系表,处理消息时先去获取这个角色。初次是NULL。
4. 5.6在ChatService中没有找到已有room的情况下会创建一个,同时试图从数据库中加载之前的配置,并将自己加入到owners中。
7.8.在获取到room后就将自己正式地加入到room中,与刚才不同这里会为user生成相应的role。
9.将自己加入到room后就获取所有已有的参与者的状态。
10.再将自己的状态广播给所有参与者。
11.在未明确规定不需要历史聊天记录的情况下获取历史记录。
12.13 更新room中参与者最后的活动时间。
房间创建完成后服务器返回相应的通知:
如此只是创建了一个默认配置的初始房间,状态为locked,如果创建者需要一个长期存在的房间就需要进行配置。
首先查询配置所需的参数:
服务器返回所有所需配置项:
客户端根据以上配置项发送相应的配置信息到服务器:
配置完后成服务器会发送相应的result结果,并将房间状态设置为unlock,这样其它人就可以加入房间了。
PS:也可以创建临时房间,具体可参见相应的XMPP协议。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述