随笔分类 -  ejabberd

ejabberd分析(五)+订阅/添加好友
摘要:模块ejabberd_c2s中,状态为session_established2。用户发送iq set 消息到服务器<iq id="M8QF3-52" type="set"><query xmlns="jabber:iq:roster"><item jid="1555215557@kinglong" name="1555215557"><group>Friends</group></item></query>< 阅读全文

posted @ 2011-10-13 12:20 心笑峰 阅读(3006) 评论(0) 推荐(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' encoding='UTF-8'?><stream:stream xmlns:stream="htt 阅读全文

posted @ 2011-09-15 23:02 心笑峰 阅读(2012) 评论(0) 推荐(0) 编辑

ejabberd分析(二) 用户注册
摘要:ejabberd中由ejabberd_c2s处理:ejabberd_c2s模块启动后gen_fsm的状态位于wait_for_stream客户端发送<stream:stream to="localhost" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0">服务器端wait_for_stream 函数中经过 case xml:get_attr_s("xmlns:stream&q 阅读全文

posted @ 2011-09-15 02:13 心笑峰 阅读(2980) 评论(1) 推荐(0) 编辑

ejabberd分析(三)启动流程
摘要:ejabberd的启动从ejabberd:start() 开始。application:start(ejabberd).application用来表示一个可以单独启动和停止、并被复用的程序单元。通常一个application都有一个同名的app文件来定义。对于系统工具(systool)直接调用的app文件必须包含以下几项:description, vsn, modules, registered, applications我们查看ejabberd.app可以看到以下内容: {application, ejabberd, [{description, "ejabberd"}, 阅读全文

posted @ 2011-09-08 22:48 心笑峰 阅读(2145) 评论(0) 推荐(0) 编辑

ejabberd分析(一)
摘要:1.客户端连接服务器,并发送消息给服务器的处理在ejabberd_c2s中。 ejabberd_c2s 是一个gen_fsm 状态机,在 ejabberd启动时装载。 初始状态为 wait_for_stream,接受形为 {xmlstreamstart, _Name, Attrs} 的消息,其他任何消息都会导致stop。 接受到连接请求,发送feature 请求后状态改为wait_for_feature_request 。 接受到feature 再发送challenge 后,状态改为 wait_for_sasl_response。 经过sasl鉴权后,状态改为 wait_for_stream, 阅读全文

posted @ 2011-09-02 13:14 心笑峰 阅读(4670) 评论(0) 推荐(3) 编辑

导航