博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ejabberd_local
阅读量:6473 次
发布时间:2019-06-23

本文共 1237 字,大约阅读时间需要 4 分钟。

ejabberd_local用于注册发到服务器本身的IQ以及路由到本地的ejabberd_sm(message)

对外主要提供route,register_iq_handler,unregister_iq_response_handler方法

route(From, To, Packet) ->    case catch do_route(From, To, Packet) of      {
'EXIT', Reason} -> ?ERROR_MSG("~p~nwhen processing: ~p", [Reason, {From, To, Packet}]); _ -> ok end.do_route(From, To, Packet) -> ?DEBUG("local route~n\tfrom ~p~n\tto ~p~n\tpacket " "~P~n", [From, To, Packet, 8]), if To#jid.luser /= <<"">> -> ejabberd_sm:route(From, To, Packet); To#jid.lresource == <<"">> -> #xmlel{name = Name} = Packet, case Name of <<"iq">> -> process_iq(From, To, Packet); <<"message">> -> ok; <<"presence">> -> ok; _ -> ok end; true -> #xmlel{attrs = Attrs} = Packet, case xml:get_attr_s(<<"type">>, Attrs) of <<"error">> -> ok; <<"result">> -> ok; _ -> ejabberd_hooks:run(local_send_to_resource_hook, To#jid.lserver, [From, To, Packet]) end end.
View Code

route当是完整的message的信息的时候,通过ejabberd_sm:route路由信息

当是IQ信息的时候route:process_iq(From, To, Packet)处理,根据register_iq_handler注册的信息

 

转载于:https://www.cnblogs.com/lawen/p/5057445.html

你可能感兴趣的文章
谷歌设置支持webgl
查看>>
js的AJAX请求有关知识总结
查看>>
Eclipse添加新server时无法选择Tomcat7的问题
查看>>
nginx 配置https 负载均衡
查看>>
双拓扑排序 HDOJ 5098 Smart Software Installer
查看>>
三分 POJ 2420 A Star not a Tree?
查看>>
存储过程报错行提示
查看>>
Leetcode 4 - median-of-two-sorted-arrays
查看>>
修改OBS为仅直播音频
查看>>
OCA读书笔记(3) - 使用DBCA创建Oracle数据库
查看>>
Python基础进阶之路(一)之运算符和输入输出
查看>>
阻塞非阻塞异步同步 io的关系
查看>>
ClickStat业务
查看>>
DMA32映射问题
查看>>
POJ 1269 Intersecting Lines(判断两直线位置关系)
查看>>
spring3.0.7中各个jar包的作用总结
查看>>
Windows 10 /win10 上使用GIT慢的问题,或者命令行反应慢的问题
查看>>
梯度下降(Gradient descent)
查看>>
Windows平台分布式架构实践 - 负载均衡
查看>>
iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变...
查看>>