基于ejabberd简单实现xmpp群聊离线消息
2014-11-08 12:00
288 查看
首先,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屏蔽以下两行代码:
mod_offline:
将下面一行代码修改
修改后的:
mod_muc_room这个模块多要修改几行,muc只是给在线的用户发送消息,那么不在线的用户就收不到了,所以在发送消息那块把发送在线的用户修改为muc的成员就ok了。
把以下一个遍历代码修改:
修改后的代码:
重新编译模块,替换原来的模块,重启ejabberd服务器就ok了。
按照这个就能简单的实现群聊离线消息了。
贴上github实现地址:https://github.com/cisiqo/ejabberd-module-dev
不仅仅要修改这一个文件,还涉及到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
相关文章推荐
- 基于ejabberd简单实现xmpp群聊离线消息
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- .net平台 基于 XMPP协议的即时消息服务端简单实现 (转)
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- 基于UDP实现简单的客户端服务端的消息传递
- 7. Swift 基于Xmpp和openfire实现一个简单的登录注册
- XMPP——Smack[6]离线消息和离线文件的实现
- xmpp和OpenFire实例,实现即时聊天室,支持离线消息
- 一种通过xmpp实现离线消息推送的方法及系统
- XMPP 实现推送,完善用户离线发送消息
- 基于ejabberd实现各个客户端消息同步
- 基于TCP实现简单的客户端服务端的消息传递(二)
- XMPP——Smack[6]离线消息和离线文件的实现
- XMPP——Smack[6]离线消息和离线文件的实现
- XMPP——Smack[6]离线消息和离线文件的实现