`
yjl49
  • 浏览: 113260 次
社区版块
存档分类
最新评论

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协议。

 

分享到:
评论

相关推荐

    openfire聊天Smack示例

    6. **多用户聊天**:Openfire支持多用户聊天(MUC),通过`MultiUserChat`类,可以创建和加入聊天室,发送和接收聊天室内的消息。 7. **事件监听**:使用Smack的事件监听机制,可以注册回调函数处理各种事件,如新...

    Smack 4.1 + Android + Openfire 聊天项目搭建

    为了支持多用户聊天室,我们需要使用`MultiUserChat`类,创建、加入聊天室并发送/接收消息: ```java MultiUserChat muc = MultiUserChatManager.getInstanceFor(connection).getMultiUserChat("roomname@...

    openfire群聊插件

    总的来说,"openfire群聊插件"结合XMLPP库,为Openfire服务器带来了强大的群聊能力,使用户能够在企业环境中实现高效、安全的多用户交互。这个插件的部署和使用对于提升团队协作效率,尤其是在分布式工作环境中,...

    xmpp+android+openfire+asmack即时通讯

    - **聊天室与群组**:Asmack支持多用户聊天(MUC),通过`MultiUserChat`类创建和管理聊天室,邀请其他用户加入并进行多人对话。 - **离线消息**:当客户端离线时,Openfire服务器可以存储消息,待客户端重新上线...

    smack连接openfire用到的jar包

    XMPP是一种实时通信协议,广泛应用于即时通讯、在线状态管理和多用户聊天室等领域。Smack库提供了丰富的API,使得开发者能够轻松地创建客户端应用,与XMPP服务器进行交互。 Openfire是一款基于Java的开源XMPP服务器...

    基于Smack3.0.4+ Openfire3.10.2开发之Android 客户端之三

    4. **加入群聊**:使用 MultiUserChat 类可以创建或加入多用户聊天室,进行实时的群组交流。 在实现以上功能时,还需要考虑网络连接的稳定性、错误处理和用户体验。例如,当网络中断时,需要自动尝试重新连接;对于...

    Openfire即时通讯服务搭建与Smack访问

    5. **群聊与多用户聊天室**: 创建多用户聊天室(MUC)并参与其中: ```java MultiUserChat muc = new MultiUserChat(connection, "room_name@conference.your_server_host"); muc.join("nickname"); muc.sendMessage...

    smack开发包

    通过阅读API文档,开发者可以了解如何初始化连接、发送和接收消息、管理用户状态、处理多用户聊天室等核心功能。API文档详细解释了每个类的用途,以及如何正确使用它们的方法和构造函数。 **3. releasedocs** `...

    smack_src_3_2_2.tar.gz

    - 它提供了一个全面的API,涵盖了连接、认证、会话管理、消息传递、多用户聊天室(MUCs)以及文件传输等功能。 - Smack支持多种XMPP服务器,如Openfire、ejabberd等,并且可以与Jabber客户端兼容。 - 源码中包含...

    qsmack 源文件

    - **多用户聊天**:通过 `MultiUserChat` 类,可以创建和参与多人聊天室,发送和接收聊天室内的消息。 - **文件传输**:`FileTransferManager` 和 `OutgoingFileTransfer` 类提供了一套完整的文件发送和接收机制,...

    smack API

    5. **多用户聊天(MUC)**:Smack支持多用户聊天室,可以创建、加入和管理聊天室。`MultiUserChat`类提供了相关的操作接口。 6. **扩展元素和自定义协议**:XMPP设计为可扩展的,Smack API允许你处理和定义自定义的...

    XMPP 开源客户端代码

    6. **多用户聊天(MUC)**:XMPP支持多人聊天室,使用`MultiUserChat`类可以创建、加入、离开聊天室,并发送和接收群聊消息。 7. **扩展功能**:XMPP协议允许通过扩展元素添加自定义功能,例如文件传输、VoIP等。...

    smack4.0.3

    7. **多用户聊天**:Smack支持MUC(Multi-User Chat),允许创建和加入聊天室,以及发送和接收聊天室内的消息。`MultiUserChat`类是实现这一功能的关键。 8. **扩展组件**:Smack允许添加自定义的XML扩展(XEP,...

Global site tag (gtag.js) - Google Analytics