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))
由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))
相关文章推荐
- httpclient模拟浏览器訪问站点
- iOS开发网络篇—发送json数据给服务器以及多值参数
- 总结C#网络编程中对于Cookie的设定要点
- okhttp+fastjson+三套环境的android—demo
- Http通讯协议在.net下的实现方法
- 网络netstat awk 分析
- bp神经网络及matlab实现
- https://wsgzao.github.io/post/linux-performance/
- 启用了不安全的HTTP方法
- background总结,转自http://www.daqianduan.com/3302.html
- HTTP协议详解
- scsi: Small Computer System Interface
- HttpServletRequest详解
- hdu5294Tricks Device【最短路+网络流】
- 获取当前网络状态/手机状态
- cogs 396. [网络流24题]魔术球问题(简化版
- TCP连接状态详解及TIME_WAIT过多的解决方法
- 增加 cookie 安全性添加HttpOnly和secure属性
- 网络:socket 访问百度
- 76.iOS 网络缓存(NSURLCache/NSCachedURLResponse)