ejabberd学习2

1.ejabberd监听多个端口服务器

每一个网络链接进来,ejabberd都会使用一个进程来负责这个链接的数据处理。原理跟Joe Armstrong的《Erlang程序设计》中的并行服务器同样,就在P196,你们能够看看。网络

相比于Joe的例子,ejabberd的代码更具备扩展性。在ejabberd_listener.erl文件中,start/3函数会根据要调用的模块的socket_type来启动相关的必备资源。在这个文件里面,假设是tcp链接,调用过程是,start/3 -> start_dependent/3 -> init/3 -> init_tcp/6 -> accept/3 ,最后可能会调用ejabberd_frontend_socket或者ejabberd_socket里面的start/4函数。frontend

在ejabberd_socket.erl文件中,仍是会根据要调用的模块的socket_type来调用相关的函数。最后会调用模块里面的start/2函数,正常返回{ok, Pid}.一路看下来,参数中有端口,处理网络链接的模块名,链接时的选项。知道这些就能够轻松配置网络链接。socket

因此在处理网络链接时,要监听多个网络端口,能够考虑一下ejabberd_listener模块。具体的代码能够参考mod_proxy65_stream.erl。tcp

 

2.在ejabberd的master库中,本身写的behavior模块,behavior_info函数给注释掉了,难道不须要导出behavior_info函数了吗?这个特性是在何时开启的?函数

 

转贴请注明来自:格通spa

相关文章
相关标签/搜索