zoukankan      html  css  js  c++  java
  • 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协议。


  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/yjl49/p/2371948.html
Copyright © 2011-2022 走看看