- 浏览: 286777 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
langzhe:
Mac 下用 sudo cpan Template,依然不能 ...
第一次 使用 tsung -
langzhe:
<server host='127.0.0.1' por ...
ejabberd/tsung 做压力测试万万不可忽视测试工具问题 -
dlliwei:
jabberd_register.xml 内容如下(我的ser ...
ejabberd/tsung 做压力测试万万不可忽视测试工具问题 -
dlliwei:
你好,我安装tsung后执行命令: tsung -f jabb ...
ejabberd/tsung 做压力测试万万不可忽视测试工具问题 -
bit1129:
这么复杂的一个东西,一句话说完了?
keepalive
ejabberd_local在init中注册了一个服务,pid(self())和MODULE:FUNCTION保存在route表中。
ejabberd_router:route
ejabberd_router:do_route 判断domain (1)是路由还是(2)交给本地处理
(1)ejabberd_local:do_route:(1.1)用户不为空,(1.2)用户为空且资源为空,(1,3)其它路由返回错误
(2)ejabberd_sm:do_route:(2.1)bare JID,(2.2)full JID
ejabberd_route: 代码片段 319 case mnesia:dirty_read(route, LDstDomain) of 320 [] -> 321 ejabberd_s2s:route(From, To, Packet); %%处理不同域 322 [R] -> 323 Pid = R#route.pid, %%处理同域 pid是ejabberd_local 的sefl(),MODULE是ejabberd_local.erl 324 if 325 node(Pid) == node() -> 326 case R#route.local_hint of 327 {apply, Module, Function} -> 328 Module:Function(From, To, Packet); 329 _ -> 330 Pid ! {route, From, To, Packet} 331 end; 332 is_pid(Pid) -> 333 Pid ! {route, From, To, Packet}; 334 true -> 335 drop 336 end; .......................处理集群.............
do_route(From, To, Packet)
TO(JID)没有user由ejabberd_local处理
有user没有资源由ejabberd_sm处理
有user和资源由 直接发送
ejabberd_local:代码片段:
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 == "" ->
{xmlelement, Name, _Attrs, _Els} = Packet,
case Name of
"iq" ->
process_iq(From, To, Packet);
"message" ->
ok;
"presence" ->
ok;
_ ->
ok
end;
true ->
{xmlelement, _Name, Attrs, _Els} = 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.
评论
1 楼
yjl49
2011-09-19
jabber:iq:roster 添加路由的时候是用jabberd_sm:process_iq ,但在取的时候却是jabberd_local ?
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_ROSTER,
?MODULE, process_iq, IQDisc).
{From, To, Packet} ->
LDstDomain = To#jid.lserver,
case mnesia:dirty_read(route, LDstDomain) of
[] ->
ejabberd_s2s:route(From, To, Packet);
[R] ->
Pid = R#route.pid,
if
node(Pid) == node() ->
case R#route.local_hint of
{apply, Module, Function} ->
Module:Function(From, To, Packet);
gen_iq_handler:add_iq_handler(ejabberd_sm, Host, ?NS_ROSTER,
?MODULE, process_iq, IQDisc).
{From, To, Packet} ->
LDstDomain = To#jid.lserver,
case mnesia:dirty_read(route, LDstDomain) of
[] ->
ejabberd_s2s:route(From, To, Packet);
[R] ->
Pid = R#route.pid,
if
node(Pid) == node() ->
case R#route.local_hint of
{apply, Module, Function} ->
Module:Function(From, To, Packet);
发表评论
-
ejabberd/riak
2012-06-15 15:50 1110今天ubuntu下编译带riak的ejabberd出现一 ... -
ejabberd 三个没有弄明白的疑问
2012-06-08 17:32 14481> 1794 ... -
ejabberd presence 以前忽略的地方
2012-06-06 17:40 937session_established2 -------& ... -
configure: error: Could not find development files of Expat library
2011-12-28 16:56 3900在64位centos安装ejabberd ./con ... -
ejabberd/tsung 做压力测试万万不可忽视测试工具问题
2011-09-22 18:03 3576这两天 用tsung测试ejabberd服务器。 2万用户在 ... -
ejaberd_s2s presence bug
2011-08-31 21:27 817presence_broadcast_first ... -
erlang数据转换成 xml
2011-06-21 11:57 105919 Content= 20 ... -
ejabberd_c2s wait_for_stream 匹配
2011-06-13 15:45 773wait_for_stream 匹配 1、closed 2 ... -
mysql 与 mnesia同步
2011-04-12 11:46 12051、mysql --------------操作成功-- ... -
ejabberd subscribe订阅后出席 available
2011-04-08 09:14 846ejabberd_c2s roster_change 获取 ... -
list 判断
2011-04-07 11:19 1020L case L of [] -> o ... -
ejabberd 存储离线消息 判断用户密码是否为空
2011-03-29 17:02 3351今天对ejabberd服务器做了一个小小的测试,发现后台抛出 ... -
ejabberd-215修正214版本timeout超时
2011-03-28 17:06 785ejabberd-215修正214版本timeout超时 我 ... -
mnesia加载mysql表数据(修改ejabberd privacy list)
2011-03-23 15:09 2219前提: mnesia 一张表 privacy mysql ... -
ejabberd中mod_privacy_odbc.erl实现没有完全遵循xmpp协议
2011-03-17 17:14 1107修改privacy 利用推送 方式 更新pr ... -
采用message消息 privacy list check_packet
2011-03-11 11:26 948采用message消息 privacy list ... -
ejabberd-xml
2011-03-10 10:58 848过滤 非法xml数据 remove_cdata( ... -
发布与订阅 publish-subscribe
2011-02-24 13:43 962基本操作 5. Entity Use Cases ... -
ejabberd修改get_roster方法使其能获的组用户
2011-01-07 17:47 1054与一个网友的聊天,虚拟机重装了,前面的聊天丢失了 上 ... -
ejabberd_listener:247) : (#Port<0.3947>) Failed TCP accept: enfile
2010-12-22 15:16 1566=INFO REPORT==== 2010-12-22 ...
相关推荐
docker-ejabberd:ejabberd Docker映像集
从版本16.12开始,ejabberd根据源树中包含的该容器的工作情况拥有自己的docker容器。 在此博客文章中查看更多内容。 我们可以期望将来对此进行更多的工作。 版本 当前版本: 21.01 Docker标记名称基于git分支和...
ejabberd-XMPP和Web聊天 将与结合在一起的即时消息服务器,以创建支持强加密并与任何Web浏览器或专用XMPP客户端(例如,Pidgin)一起使用的实时聊天服务器。 ejabberd是功能强大的XMPP服务器,它支持群集,实时升级...
ejabberd是一款高度可扩展、高性能的XMPP服务器,被广泛用于实时通讯系统,如即时消息、在线状态同步、视频聊天等。集群部署ejabberd可以提高服务的可用性和处理能力,满足大规模用户的需求。在本项目中,ejabberd与...
ejabberd 社区版 ejabberd 是一种分布式容错技术,允许创建大型即时消息应用程序。 该服务器可以在单个节点上可靠地支持数千个并发用户,并且旨在提供卓越的容错标准。 作为一种基于行业标准的开源技术,ejabberd 可...
ejabberd社区版 ejabberd是一种分布式容错技术,可以创建大型即时消息传递应用程序。 该服务器可以在单个节点上可靠地支持成千上万的同时用户,其设计旨在提供卓越的容错标准。 作为基于行业标准的开源技术,...
EJABBERD Startalk 的消息交换服务器是基于 ejabberd 开发的,根据业务需要改造而来。修改和扩展了很多 ejaberd 不支持的功能。 关键功能 分布式:去掉了依赖 mnesia 集群的代码,来支持更大的集群,以及防止由于...
Ejabberd安装配置详解 Ejabberd是一款流行的开源即时通讯服务器软件,具有高度灵活性和可扩展性。下面是Ejabberd安装配置的详细知识点解析: Ejabberd下载 Ejabberd的下载可以从官方网站获取,目前支持多种操作...
ejabberd是一款强大的即时通讯服务器,它基于Jabber/XMPP协议,这使得ejabberd能够支持丰富的交互式通信功能,如文本聊天、音视频通话、群聊、文件传输等。作为一款开源软件,ejabberd遵循GPLv2许可证,允许用户自由...
5. 配置Ejabberd:在Ejabberd的配置文件(`ejabberd.yml`)中,需要添加或修改以下部分来启用外部认证: ```yaml auth_method: external external_auth_service: 'script' external_auth_commands: - "/path/to...
ejabberd是一款开源的XMPP服务器,它基于Erlang编程语言,提供高度可扩展性和高并发处理能力。在Windows环境下,ejabberd通常通过安装程序进行部署,这正是"ejabberd windows installer"所涉及的内容。Ejabberd不...
ejabberd是一款开源的XMPP服务器,广泛用于构建实时通信系统,如即时消息、VoIP、协作工具等。在部署ejabberd服务器后,为了确保其正确配置和功能正常,通常需要一个客户端来进行测试。在这个场景中,"ejabberd ...
ejabberd - 高性能企业即时消息服务器快速入门指南要求要编译 ejabberd,您需要: GNU 制造海湾合作委员会Libexpat 1.95 或更高版本利比亚ml 0.1.4 或更高Erlang/OTP R15B 或更高版本。 OpenSSL 0.9.8 或更高版本,...
ejabberd是一个开源的XMPP服务器,它提供了稳定、安全且可扩展的服务,支持多种编程语言的客户端接口。Smack是Java和Android平台上常用的XMPP客户端库,它提供了丰富的API,使得开发者可以轻松地构建XMPP应用。 **...
IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。
本项目“Android IM开发 Ejabberd+asmck+spack”提供了一套完整的解决方案,包括服务器端、Android客户端以及PC端客户端。 **Ejabberd服务器** Ejabberd是一款开源的XMPP(Extensible Messaging and Presence ...
本文件主要关注的是如何在iOS平台上使用XMPP与ejabberd服务器进行集成,实现即时通讯功能。 ejabberd是一款开源的XMPP服务器,支持多种平台,包括iOS。它提供了强大的可扩展性和高可用性,能够处理大量的并发用户,...
ejabberd_rest_client是与ejabberd服务器交互的一个客户端库,它利用ejabberd的API接口,通过RESTful方式来操作ejabberd服务器,实现了对ejabberd服务器的远程控制和数据管理。 ejabberd API是ejabberd服务器提供的...
ejabberd是一款高度可扩展且稳定可靠的XMPP聊天服务器,专为满足现代通信需求而设计。这款服务器在IT行业中广泛应用于构建实时通讯系统,尤其是针对手机端应用,如Android和iOS的聊天功能。ejabberd的强大在于其灵活...
ejabberd是一款开源的XMPP服务器,常用于构建实时通信系统,如即时消息(IM)、群聊等。XMPP(Extensible Messaging and Presence Protocol)是一种基于XML的开放标准,用于实现即时通信和在线状态传输。在这个场景...