文档章节

基于ejabberd简单实现xmpp群聊离线消息

nidongwo-
 nidongwo-
发布于 2014/11/08 12:00
字数 346
阅读 600
收藏 1

首先,xmpp服务器是基于ejabberd。离线消息模块是mod_interact,原地址地址:https://github.com/adamvduke/mod_interact; 修改后实现群聊离线消息:https://github.com/Joywok/mod_interact

不仅仅要修改这一个文件,还涉及到ehabberd_sm、mod_muc_room、mod_offline三个模块的修改。

以上三个文件仅仅只需要屏蔽或者修改几行代码就能实现了,很简单的。

ehabberd_sm屏蔽以下两行代码:

<<"groupchat">> ->
bounce_offline_message(From, To, Packet);

mod_offline: 将下面一行代码修改

if (Type /= <<"error">>) and (Type /= <<"groupchat">>)

修改后的:

if (Type /= <<"error">>)

mod_muc_room这个模块多要修改几行,muc只是给在线的用户发送消息,那么不在线的用户就收不到了,所以在发送消息那块把发送在线的用户修改为muc的成员就ok了。

把以下一个遍历代码修改:

lists:foreach(
 fun({_LJID, Info}) ->
 ejabberd_router:route(
 jlib:jid_replace_resource(
StateData#state.jid,
FromNick),
Info#user.jid,
 Packet)
 end,?DICT:to_list(StateData#state.users)),

修改后的代码:

lists:foreach(
 fun(Info) ->
 {Jid,_} = Info,
{Email,Server,Source}=Jid,
To={'jid',Email,Server,Source,Email,Server,Source},
ejabberd_router:route(
jlib:jid_replace_resource(
 StateData#state.jid,
FromNick),
To,
Packet)
end,?DICT:to_list(StateData#state.affiliations)),

重新编译模块,替换原来的模块,重启ejabberd服务器就ok了。

按照这个就能简单的实现群聊离线消息了。

贴上github实现地址:https://github.com/cisiqo/ejabberd-module-dev

© 著作权归作者所有

共有 人打赏支持
nidongwo-
粉丝 34
博文 27
码字总数 5183
作品 0
武汉
程序员
说说ejabberd离线消息踩过的坑

使用过ejabberd的或许知道,也许踩过这个坑。那么就说说我们踩过的ejabberd的离线消息的坑吧。 ejabberd原生的离线消息的机制是,一般用户保存100条离线消息,管理员保存5000条离线消息。超过...

nidongwo-
2016/08/29
44
0
共享和出售即时通讯源代码,类似微信陌陌,全新定义基于Tiagse的社交聊天系统

这套IM系统是我个人自主开发 完全基于Tiagse ,主要功能为:Android、iOS和服务端,可以支持包括文字 图片,语音等任何消息形式,系统采用的成熟的XMPP协议+CentOS 6.5+Jdk1.8+mysql5.6+mon...

iholdcode
2015/08/13
1K
4
企业级 XMPP 通信工具--ttalk.im

说到 IM 通信,一般首选都是 XMPP,并且首推 Ejabberd。国内使用 Ejabberd 厂家很多,对企业级的 IM 有需求的厂家很多,同时希望能快速集成一个 IM 的厂家就更多了。但是在这些厂家中很多都抱...

匿名
2016/01/14
2.4K
0
基于ejabberd实现各个客户端消息同步

先上图再说(左侧是web端,右侧是ios端) ![在此输入图片描述][1] ![在此输入图片描述][2] 要实现上面的功能,如果所有设备都在线的话,那么carboncopy(xmpp xep-0280协议)这个模块是可以实...

nidongwo-
2015/03/28
0
0
Android即时通讯--YiIM

基于Xmpp的Android即时通讯手机应用软件YiIM第二版 功能日志: 登录 好友获取 文本消息发送与接收,离线消息接收 消息记录,会话记录 添加好友 发送语音短消息 发送大表情 发送文字表情混合消...

bjhongping
2014/09/16
7.9K
0

没有更多内容

加载失败,请刷新页面

加载更多

Web系统大规模并发:电商秒杀与抢购

一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整个Web系统遇到了很多的问题和挑战。如果Web系统不做针对性的优化,会轻而易举地陷入到异常...

xtof
今天
1
0
代码质量管理平台-sonarqube

在工作中,往往开发的时候会不怎么注重代码质量的人很多,存在着很多的漏洞和隐患等问题,sonarqube可以进行代码质量的审核,而且十分的残酷。。。。。接下来我们说下怎么安装 进入官网下载:...

落叶清风
今天
6
0
在Ubuntu安装和配置Sphinx

Ubuntu系统默认是配置有sphinx的,先检查一下,别多此一举。。。。。 在开始本指南之前,您需要: 一个Ubuntu 16.04服务器。 sudo的一个非root用户,您可以通过以下设置本教程 。 安装在服务...

阿锋zxf
今天
1
0
Qt编写输入法V2018超级终结版

对于qt嵌入式linux开发人员来说,输入法一直是个鸡肋问题,要么不支持实体键盘同步,要么不能汉字输入,要么不支持网页输入等,这几年通过陆续接触大量的各种输入法应用场景客户,得到真实需...

飞扬青云
今天
2
0
TypeScript基础入门之高级类型的多态的 this类型

转发 TypeScript基础入门之高级类型的多态的 this类型 高级类型 多态的this类型 多态的this类型表示的是某个包含类或接口的子类型。 这被称做F-bounded多态性。 它能很容易的表现连贯接口间的...

durban
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部