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協議。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM