ejabberd学习2
2024-08-27 04:19:28
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函数。
在ejabberd_socket.erl文件中,还是会根据要调用的模块的socket_type来调用相关的函数。最后会调用模块里面的start/2函数,正常返回{ok, Pid}.一路看下来,参数中有端口,处理网络连接的模块名,连接时的选项。知道这些就可以轻松配置网络连接。
所以在处理网络连接时,要监听多个网络端口,可以考虑一下ejabberd_listener模块。具体的代码可以参考mod_proxy65_stream.erl。
2.在ejabberd的master库中,自己写的behavior模块,behavior_info函数给注释掉了,难道不需要导出behavior_info函数了吗?这个特性是在什么时候开启的?
转贴请注明来自:格通
最新文章
- Linux操作系统主机名(hostname)简介
- 【Win10开发】Toast通知——后台激活
- EF6(CodeFirst)+MySql开发遇到的坑
- Atitti knn实现的具体四个距离算法 欧氏距离、余弦距离、汉明距离、曼哈顿距离
- Progress.js – 为页面上的任意对象创建进度条效果
- php实现添加图片水印
- UIbutton 和UIview 切单角
- VPN错误800、错误789
- Clean Code(三):注释
- VisualSVN Server 从此告别SVN记事本配置
- 创建Properties文件
- c++模板入门
- 帆软的报表系统与泛微OA结合起来,这两个软件麦枫提供了经典的服务。
- 计算理论:NFA转DFA的两种方法
- Linux系统Shell脚本编程
- cogs2479 偏序(CDQ套CDQ)
- 【新特性】JDK1.9
- ifconfig中lo、eth0、br0、wlan0接口
- [ACM International Collegiate Programming Contest, Amman Collegiate Programming Contest (2018)]
- nginx,uwsgi,部署django,静态文件不生效问题