
ejabberd
yjl49
这个作者很懒,什么都没留下…
展开
-
ejabberd分析(一)
1.客户端连接服务器,并发送消息给服务器的处理在ejabberd_c2s中。 ejabberd_c2s 是一个gen_fsm 状态机,在 ejabberd启动时装载。 初始状态为 wait_for_stream,接受形为 {xmlstreamstart, _Nam原创 2011-09-02 13:14:43 · 10000 阅读 · 0 评论 -
ejabberd分析(五)+订阅/添加好友
模块ejabberd_c2s中,状态为session_established2。用户发送iq set 消息到服务器<iq id="M8QF3-52" type="set"><query xmlns="jabber:iq:roster"><item jid="1555215557@kinglong" name="1555215557&qu2011-10-13 12:20:00 · 207 阅读 · 0 评论 -
ejabberd分析(四) 用户登录
仍然看ejabberd_c2s 这个gen_fsm 模块。 RECV <stream:stream to="localhost" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">SENT <?xml version='1.0' encodi...2011-09-15 23:02:00 · 199 阅读 · 0 评论 -
ejabberd分析(二) 用户注册
ejabberd中由ejabberd_c2s处理:ejabberd_c2s模块启动后gen_fsm的状态位于wait_for_stream客户端发送<span style="color: #FF0000;" mce_style="color: #FF0000;"><stream:stream to="localhost" xmlns="jabber:clie...2011-09-15 02:13:00 · 239 阅读 · 0 评论 -
ejabberd分析(三)启动流程
ejabberd的启动从ejabberd:start() 开始。 application:start(ejabberd).application用来表示一个可以单独启动和停止、并被复用的程序单元。通常一个application都有一个同名的app文件来定义。 对于系统工具(systool)直接调用的app文件必须包含以下几项:description, vsn, ...2011-09-08 22:48:00 · 145 阅读 · 0 评论 -
ejabberd分析(一)
1.客户端连接服务器,并发送消息给服务器的处理在ejabberd_c2s中。 ejabberd_c2s 是一个gen_fsm 状态机,在 ejabberd启动时装载。 初始状态为 wait_for_stream,接受形为 {xmlstreamstart, _Name, Attrs} 的消息,其他任何消息都会导致stop。 接受到连接请求,发送feature 请求后状态改为wait_fo...2011-09-02 13:14:00 · 280 阅读 · 0 评论 -
ejabberd分析(五)+订阅/添加好友
模块ejabberd_c2s中,状态为session_established2。用户发送iq set 消息到服务器Friends服务器端匹配到case Name of ...... To = xml:get_attr_s("to", Att原创 2011-10-13 12:20:01 · 3330 阅读 · 1 评论 -
ejabberd分析(三)启动流程
ejabberd的启动从ejabberd:start() 开始。application:start(ejabberd).application用来表示一个可以单独启动和停止、并被复用的程序单元。通常一个application都有一个同名的app文件来定义。原创 2011-09-08 22:48:24 · 3650 阅读 · 0 评论 -
ejabberd分析(四) 用户登录
仍然看ejabberd_c2s 这个gen_fsm 模块。RECV SENT SENT DIGEST-MD5 JIVE-SHAREDSECRET PLAIN ANONYM原创 2011-09-15 23:02:34 · 3776 阅读 · 0 评论 -
ejabberd分析(二) 用户注册
ejabberd中由ejabberd_c2s处理:ejabberd_c2s模块启动后gen_fsm的状态位于wait_for_stream客户端发送服务器端wait_for_stream 函数中经过 case xml:get_attr_s("xmlns原创 2011-09-15 02:13:35 · 5832 阅读 · 0 评论 -
Openfire 好友状态的发送(用户登录)
客户端在登录 Openfire 时都会收到自己订阅的好友状态,那么这个好友状态是怎么下发下去的呢? 用户在登录后会发送一个<presence> 来更新自己的状态,在PresenceRouter 中进行处理。这个presence 交由PresenceUpdateHandler 处理,在判断用户为注册用户后使用RosterManager.getRoster() 来获取所有已经订阅...2011-10-21 18:01:00 · 226 阅读 · 0 评论