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

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

 
阅读更多

 

 

 

修改privacy 利用推送 方式 更新privacy list  userlist

 updated_list(_, #userlist{name = OldName} = Old, #userlist{name = NewName} = New) ->

      if

         OldName == NewName ->

               New;

        true ->

                Old

      end.

 上传几个附近 备用

 

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

其中,设置默认和删除privacy list时没有判断当前privacy list 是否有资源在使用。仅仅在删除时候判断了privacy list是否是默认的。

如果是active的话,此状态存在用户资源当前进程中。其他资源进程不能直接读取,所以无法判断目前到底有多少个进程正在使用privacy list.

目前想到的解决方法:

1、建立一个内存表,每个进程与它的状态都写在里面。用的话查询一下就可以。

2、进程之间相互发送消息。”双方“提供相应的机制。

方法1存在的问题,如果一个用户邦定20个资源,当前有10000个用户(假设都在线),这时内存表里面存在的数据会是10*10000=200000。 还必须提供的相应的更新同步操作。用户数量直接影响效率。

方法2存在的问题 如果一个用户邦定20个资源,当前有10000个用户(假设都在线)。20个用户资源进程,其中一个更新,就必须与其他19个进行交互。与用户数量无关。

谁有其他的好方法?

 

 

0
5
分享到:
评论

相关推荐

    ejabberd-1.1.3_1-windows-installer.exe

    点击即可安装。。。一路next下去

    mod_http_offline:ejabberd 模块在用户离线时发送帖子

    更改mod_http_offline.erl文件中的'[your-url-here]'字符串。 为了编译这个,我在我的主目录下载了代码并运行: erlc -I /lib/ejabberd/include/ -pa ~/ejabberd/deps/lager/ebin/ mod_http_offline.erl 将 ....

    extensible_messaging_and_presence_protocol_xmpp_co.zip

    市面上有许多开源和商业的XMPP服务器实现,例如ejabberd、Prosody和Openfire。这些服务器提供了稳定、可扩展的基础架构,可处理大规模用户群。相应的,也有许多XMPP客户端应用,如Gajim、Pidgin和 Conversations,...

    ejabberd_rest_client:面向ejabberd的REST客户端

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

    smack_src_3_2_2.tar.gz

    Smack是一款开源的Java库,专门用于实现XMPP(Extensible Messaging and Presence Protocol)协议,这是一种基于XML的即时通讯协议,广泛应用于聊天、文件传输、在线状态管理等多个领域。3.2.2是Smack的一个特定版本...

    ejabberd-stanza-ack:ejabberd 13.xx的ejabberd节确认模块

    erlc -I $ {EJABBERD_SRC} mod_stanza_ack.erl {EJABBERD_SRC}必须替换为ejabberd源文件的实际位置,例如/ home / foobar / ejabberd / src。 可以在找到此文件夹的示例。 使用以下命令将已编译的.beam文件移动到...

    iOS xmpp ejabberd服务器

    iOS即时通讯系统在近年来变得越来越流行,而XMPP(Extensible Messaging and Presence Protocol)作为一款开放标准的协议,被广泛应用于此类系统中。本文件主要关注的是如何在iOS平台上使用XMPP与ejabberd服务器进行...

    ejabberd-15.07-osx-installer.app.zip

    ejabberd是一款开源的XMPP服务器,广泛应用于实时通讯系统,如即时消息、在线状态显示、多用户聊天室等功能的实现。它基于Erlang编程语言,这使得ejabberd具有高度可扩展性和高容错性。 ejabberd-15.07-osx-...

    instance_message_system_for_java.rar_Jabber_java 即时通讯_java 通讯_即时

    在Java中实现这样的系统,开发者通常会利用XMPP(Extensible Messaging and Presence Protocol)框架,它是Jabber协议的一种扩展。XMPP使用XML流来传输数据,提供了强大的扩展性,支持多种功能,如聊天、文件传输、...

    XMPP.zip_xmpp _xmpp csharp

    在.NET框架下,开发者可以利用C#语言来实现XMPP协议,以创建实时、双向的通信应用。这篇文档将深入探讨XMPP在C#环境中的应用,以及如何利用开源库来构建XMPP客户端和服务端。 首先,让我们理解XMPP的基本概念。XMPP...

    ejabberd 群聊 strophe.js 实现

    在XMPP中,群聊通常通过多用户聊天(MUC,Multi-User Chat)服务实现。MUC允许多个用户在一个聊天室中进行实时交流。在ejabberd服务器上,你可以创建并管理这些聊天室。 接下来,我们需要关注以下关键步骤: 1. **...

    ejabberd_mod_gcm:用于Ejabberd的Google Cloud Messaging API(推送消息)

    mod_gcm 现在! 很好地传播项目! mod_gcm是一个ejabberd模块,可使用Google Cloud Messaging API将离线消息作为PUSH通知发送给Android。 考虑使用实现并与许多PUSH服务一起使用的 。 该模块与无关。 该模块的...

    mod_last_seen:类似于上次使用通用odbc驱动程序的功能的whatsapp

    埃雅伯德最后一次看到v0.1 该模块实现了ejabberd中whatsapp的最新功能,主要对移动聊天客户端很有帮助。 传统的XMPP方法依靠订阅状态节,因为移动网络的不可靠性是不可行的。 客户端在终止聊天活动时发送iq发布请求...

    xmpp协议_中文版

    5. **实体与资源**:在XMPP中,每个用户是一个实体,实体可以有多个同时在线的资源,如桌面、手机等。通过资源标识,服务器可以区分同一实体的不同设备。 6. **消息与状态**:XMPP的消息传递是基于推送的,可以实现...

    ejabberd windows installer

    - **服务配置**:配置ejabberd服务,包括监听的端口、认证方式、模块启用等,这些通常在ejabberd.yml配置文件中进行。 - **安全管理**:设置管理员账号和密码,确保服务器的安全性。 - **启动与管理**:安装完成后,...

    ejabberd安装配置[归纳].pdf

    Ejabberd安装配置详解 Ejabberd是一款流行的开源即时通讯服务器软件,具有高度灵活性和可扩展性。下面是Ejabberd安装配置的详细知识点解析: Ejabberd下载 Ejabberd的下载可以从官方网站获取,目前支持多种操作...

    xmpp服务器端介绍

    1. 选择服务器软件:流行的XMPP服务器软件有ejabberd、Prosody、Openfire等,它们都遵循XMPP协议并提供不同的特性和配置选项。 2. 安装和配置:根据所选服务器软件的文档进行安装,然后配置服务器的网络设置、用户...

    mod_offline_my:将Ejabberd脱机消息通知转发到外部HTTP端点

    最简单的方法是在ejabberd.yml模块设置下启用mod_offline_my并设置某些配置选项。 配置选项 mod_offline_my需要一些参数才能正常运行。 应在ejabberd.yml mod_offline_my下设置以下选项: host (必填, string )-...

Global site tag (gtag.js) - Google Analytics