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


  • 相关阅读:
    macbook使用美化工具在屏幕展示出常查信息
    Mac 下 Docker 运行较慢的原因分析及个人见解
    Json Web Token
    Mac开发环境部署
    python3.6_多进程_multiprocessing.pool_concurrent.futures_ProcessPoolExecutor_对比
    apache2_nginx_反向代理设置_https_不验证后端证书_只允许访问首页
    awstats_yum_dnf_centos8_nginx_X-Forwarded-For
    Django_uwsgi_nginx_centos_笔记
    python3_pandas.HDFStore_h5py_HDF5_的笔记
    echarts_highcharts_笔记_风向箭头
  • 原文地址:https://www.cnblogs.com/yjl49/p/2371948.html
Copyright © 2011-2022 走看看