ejabberd mod_pubsub 离线消息
Posted
技术标签:
【中文标题】ejabberd mod_pubsub 离线消息【英文标题】:ejabberd mod_pubsub offline message 【发布时间】:2016-01-13 18:16:16 【问题描述】:我想拦截mod_pubsub
的离线消息,如果我在ejabberd中向离线用户发送正常消息,如果用户重新连接消息到达,我会在离线odbc表中看到该消息。
如果我发布到一个节点,并且某个用户处于脱机状态,我在脱机消息表中看不到任何内容,但如果用户重新连接项目节点,则会正确发送,因此消息会保存在某处。
我可以将项目离线发送到离线消息 odbc 表吗?或者我可以拦截mod_pubsub
的离线项目,例如消息,实际上对于来自插件的消息我可以这样做:
start(_Host, _Opt) ->
inets:start(),
ejabberd_hooks:add(offline_message_hook, _Host, ?MODULE, create_message, 50).
stop (_Host) ->
ejabberd_hooks:delete(offline_message_hook, _Host, ?MODULE, create_message, 50).
这是我为mod_pubsub
配置的ejabberd.yml
:
mod_pubsub:
access_createnode: pubsub_createnode
## reduces resource comsumption, but XEP incompliant
ignore_pep_from_offline: true
## XEP compliant, but increases resource comsumption
## ignore_pep_from_offline: false
last_item_cache: false
db_type: odbc
plugins:
- "flat"
- "hometree"
- "pep" # pep requires mod_caps
【问题讨论】:
【参考方案1】:默认情况下,发布订阅消息类型为headline
。根据 XMPP 规范,标题消息不应存储在离线消息存储中。
但是,有一个mod_pubsub
选项可以更改默认通知类型。例如,您可以将 mod_pubsub
notification_type
选项设置为 normal
。普通消息存储在离线存储中。
【讨论】:
以上是关于ejabberd mod_pubsub 离线消息的主要内容,如果未能解决你的问题,请参考以下文章
具有流管理 (XEP-198) 的 Ejabberd 不使用离线消息挂钩