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
||
|
|