`
langzhe
  • 浏览: 286794 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ejabberd 三个没有弄明白的疑问

 
阅读更多

 

 

 

1>

1794             case transaction(CreateNode, transaction) of

1795                 {result, {NodeId, SubsByDepth, {Result, broadcast}}} ->

1796                     broadcast_created_node(Host, Node, NodeId, Type, NodeOptions, SubsByDepth),                                                  

1797                     case Result of

1798                         default -> {result, Reply};

1799                         _ -> {result, Result}

1800                     end;

1801                 {result, {_NodeId, _SubsByDepth, default}} ->

1802                     {result, Reply};

原来这里的广播是针对 集合节点的。
例如:树节点,当在创建子节点时会产生调用此broadcast_created_node

不明白以下两处的含义,待解决。。。
2>
 create_node(Host, ServerHost, string_to_node("/home"), service_jid(Host), "hometree"), 
 create_node(Host, ServerHost, string_to_node("/home"), service_jid(Host), "hometree"), 

3>

今天又添加了个疑问, 没搞明白 下面为什么要执行两个presence

 

 742 presence_probe(#jid{luser = User, lserver = Server, lresource = Resource} = JID, JID, Pid) ->

 743     %%?DEBUG("presence probe self ~s@~s/~s  ~s@~s/~s",[User,Server,Resource,element(2,JID),element(3,JID),element(4,JID)]),

 744     presence(Server, {presence, JID, Pid}),                                                                                                      

 745     presence(Server, {presence, User, Server, [Resource], JID});



4>今天又多了个疑问
下面代码为什么要 比较SubKey和GenKey
479 publish_item(NodeIdx, Publisher, PublishModel, MaxItems, ItemId, Payload) ->
 480     ?DEBUG("In ~p:publish_item ~p ItemId=~p~n", [?MODULE, ?LINE, ItemId]),
 481     SubKey = jlib:jid_tolower(Publisher),
 482     GenKey = jlib:jid_remove_resource(SubKey),
 483     ?DEBUG("In ~p:publish_item ~p 
 484             ~nPublisher=~p~n SubKey=~p~n GenKey=~p~n",
 485             [?MODULE, ?LINE, Publisher, SubKey, GenKey]),
 486     GenState = get_state(NodeIdx, GenKey),
 487     SubState = case SubKey of
 488         GenKey -> GenState;
 489         _ -> get_state(NodeIdx, SubKey)                                                                                                          
 490         end,

分享到:
评论

相关推荐

    ejabberd 服务器测试客户端spark

    9. **推送通知**:对于移动设备,ejabberd可以通过第三方服务(如APNs或GCM)提供推送通知。如果配置得当,Spark客户端在后台时应能收到新消息的通知。 10. **服务器性能监控**:Spark还可以帮助监测ejabberd服务器...

    ejabberd源码

    总之,ejabberd是一个强大且灵活的即时通讯解决方案,适合那些需要构建可扩展、安全和高度定制的通信平台的开发者和企业。通过深入学习和利用ejabberd的特性,我们可以构建出满足各种需求的即时通讯系统。

    android+ejabberd

    IM(ejabberd)服务器的客户端android开发的代码详解,该代码例子包含单聊、群聊、发送文字、发送及接收文件等功能。

    iOS xmpp ejabberd服务器

    本文件主要关注的是如何在iOS平台上使用XMPP与ejabberd服务器进行集成,实现即时通讯功能。 ejabberd是一款开源的XMPP服务器,支持多种平台,包括iOS。它提供了强大的可扩展性和高可用性,能够处理大量的并发用户,...

    Android IM开发 Ejabberd+asmck+spack

    虽然项目描述中没有详细说明spack的实现细节,但通常情况下,一个XMPP客户端会包含用户界面、连接管理、消息处理等功能。用户可以通过spack与Android设备上的asmck用户进行无缝交流,实现跨平台的通讯。 **知识点...

    ejabberd中mod_privacy_odbc.erl实现没有完全遵循xmpp协议

    5. **错误处理和回退**:当数据库操作失败时,ejabberd可能没有按照协议规定返回合适的错误信息,或者没有实现优雅的回退机制。 6. **兼容性**:不完全遵循协议的实现可能导致与某些客户端或服务器的兼容性问题,...

    ejabberd windows installer

    在"ejabberd windows installer"中,文件"ejabberd-2.1.10-windows-installer.exe"是ejabberd的一个特定版本(2.1.10)的Windows安装程序。这个安装程序会引导用户完成ejabberd的配置过程,包括选择安装路径、设置...

    ejabberd安装配置[归纳].pdf

    Ejabberd提供了一个基于Web的管理控制台,用户可以通过该控制台来管理和配置Ejabberd服务。该控制台提供了丰富的管理功能,包括用户管理、群组管理、消息管理等。 Ejabberd配置文件 Ejabberd的配置文件是用于配置...

    ejabberd的安装包

    ejabberd安装包,很好的工具!适合安装!一定会很好用的!

    Android使用smack连接ejabberd服务器注册、收发消息

    ejabberd是一个开源的XMPP服务器,它提供了稳定、安全且可扩展的服务,支持多种编程语言的客户端接口。Smack是Java和Android平台上常用的XMPP客户端库,它提供了丰富的API,使得开发者可以轻松地构建XMPP应用。 **...

    ejabberd 群聊 strophe.js 实现

    在这个场景中,我们关注的是如何使用strophe.js库在前端实现与ejabberd服务器的交互,特别是群聊功能。 strophe.js是一个轻量级的JavaScript库,用于处理XMPP协议。它使得在浏览器环境中与XMPP服务器进行通信成为...

    ejabberd安装配置.docx

    三、Ejabberd 安装 Ejabberd 的安装需要按照安装指南进行安装。安装完成后,需要启动 Ejabberd 服务。 3.1 安装流程 Ejabberd 的安装流程主要包括以下几个步骤: * 下载安装包 * 解压缩安装包 * 配置环境变量 * ...

    ejabberd-2.1.11

    windows环境下的ejabberd。。。点击即可安装

    ejabberd-14.07聊天服务器

    在"ejabberd-14.07.app"这个文件中,我们可以预期这是一个ejabberd服务器的特定版本应用包,可能包含了ejabberd的源代码、配置文件、安装脚本以及必要的文档。安装和配置ejabberd通常涉及以下几个步骤: 1. **下载...

    Ejabberd-2.1.10-mac

    这个版本可能包含了针对Mac OS X系统的优化和适配,使得在苹果电脑上部署和运行Ejabberd变得更加便捷。 描述中的“便捷的服务器架构工具”暗示了Ejabberd设计的易用性,可能是通过提供一键安装的方案,让用户能够...

    ejabberd_rest_client:面向ejabberd的REST客户端

    ejabberd是一个高度可扩展和可靠的XMPP服务器,它支持多种协议,广泛用于即时通讯和实时协作应用。ejabberd_rest_client是与ejabberd服务器交互的一个客户端库,它利用ejabberd的API接口,通过RESTful方式来操作...

    ejabberd服务器安装及客户端注册文档

    在进行IT项目管理时,特别是涉及到服务器安装和客户端注册的场景,ejabberd是一个非常重要的开源即时通讯服务器,它基于XMPP(Extensible Messaging and Presence Protocol)协议,这个协议是国际开放标准用于即时...

    docker-ejabberd:用于Ejabberd服务器的Dockerfile

    Dockerfile构建一个ejabberd容器映像。 从版本16.12开始,ejabberd根据源树中包含的该容器的工作情况拥有自己的docker容器。 在此博客文章中查看更多内容。 我们可以期望将来对此进行更多的工作。 版本 当前版本:...

    docker-ejabberd:ejabberd Docker映像集

    docker-ejabberd:ejabberd Docker映像集

    SSM框架Demo并包含扫码上传,ejabberd消息推送

    综上所述,这个"SSM框架Demo"是一个全面的实践项目,涵盖了SSM基础、二维码技术、文件上传、WebSocket通信和ejabberd消息推送等多个方面。对于学习者来说,通过这个Demo可以了解和掌握SSM框架的实际应用,并提升在...

Global site tag (gtag.js) - Google Analytics