当前位置: 首页 > 工具软件 > Jabberd2s > 使用案例 >

jabberd2消息流

郑西岭
2023-12-01

c2s:客户端连接的组件,可以多个域公用。

route:route组件,主要处理消息转发。一套服务只有一个

sm:jabberd2的核心组件,消息处理组件。每个域需要配置至少一个sm组件,一个sm组件只能对应一个域。看代码,一个域应该可以配置多个sm。


jabberd2消息流分析:

A@hqu.edu.cn 发送一条消息给 B@hqu2.edu.cn 。

1、clientA发给连接的c2s组件

2、c2s组件加了一条route信息<route xmlns='http://jabberd.jabberstudio.org/ns/component/1.0' from='c2s' to='hqu.edu.cn'>,发给route组件。

3、route组件 查找到hqu.edu.cn所属的sm(hqu.edu.cn),将消息转发给sm(hqu.edu.cn)

4、sm(hqu.edu.cn)调用模块处理消息后,修改route信息为<route xmlns='http://jabberd.jabberstudio.org/ns/component/1.0' from='hqu.edu.cn' to='hqu2.edu.cn'>,将消息发给roue

5、route组件查找到hqu2.edu.cn所属的sm(hqu2.edu.cn),将消息发给sm(hqu2.edu.cn)

6、sm(hqu2.edu.cn)调用模块处理消息后,修改route 信息为<route xmlns='http://jabberd.jabberstudio.org/ns/component/1.0' from='hqu2.edu.cn' to='c2s'>,讲消息发给route

7、route组件查找到c2s,将消息发给c2s

8、c2s组件去掉route信息,将消息发给clientB

9、clientB接收到消息。


clientA: hqu.edu.cn

   |
   |
   c2s
 |
 |
----------------------------  
| R:from='c2s' to='hqu.edu.cn'|
| W:from='c2s' to='hqu.edu.cn'|   route
|-----------------------------
|
  sm(hqu.edu.cn)
|
-----------------------------------
R:from='hqu.edu.cn' to='hqu2.edu.cn'|
W:from='hqu.edu.cn' to='hqu2.edu.cn'|
  route
------------------------------------

|

|

|
 sm(hqu2.edu.cn)
 |
----------------------------|  
R:from='hqu2.edu.cn' to='c2s'|
W:from='hqu2.edu.cn' to='c2s'|
     route
-----------------------------
|
c2s
|
clientB 
 类似资料: