您的位置:首页 > 理论基础 > 计算机网络

ejabberd源码分析《二》客户端网络监听

2016-04-05 17:30 891 查看
在配置文件ejabberd.cfg的listen配置项里,可以配置监听模块

由ejabberd_listener.erl负责启动监听

1、客户端的连接

生成一个套接字以后,由ejabberd_c2s.erl调用

ejabberd_frontend_socket:start

ejabberd_receiver:start 生成一个gen_server处理套接字数据

在ejabberd_receiver中

handle_info({Tag, _TCPSocket, Data},负责处理接收到数据

ejabberd_receiver:process_data

% 解析接收到的数据

fxml_stream:parse,在解析的过程中,会发送消息给本进程,由

process_data([Element | Els],

#state{c2s_pid = C2SPid} = State)

when element(1, Element) == xmlel;

element(1, Element) == xmlstreamstart;

element(1, Element) == xmlstreamelement;

element(1, Element) == xmlstreamend ->

进行处理,将解析得出的XML数据发送给客户端进程

gen_fsm:send_event(C2SPid, element_wrapper(Element))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: