将ejabberd的推送通知桥接到我的应用服务器

时间:2019-05-05 01:11:11

标签: push-notification ejabberd ejabberd-module

我正试图让ejabberd通过mod_push通知我的应用服务器脱机消息(然后我的应用服务器可以与Apple和Google通信以发送通知)。启用了mod_push,我的应用程序服务器订阅了客户端pub子节点,看起来ejabberd尝试转发该消息,但失败并在日志中显示“错误请求”。

我正在将我的应用程序服务器在本地计算机(mac os)上使用ejabberd 19.02进行测试。

除了ejabberd通知我的服务器的那部分之外,我一切正常(但如果我手动调用服务器-绕过ejabberd,我可以得到通知的工作)。我尝试了很多事情,觉得自己已经接近了,但是却错过了弥合差距的关键部分。这是我到目前为止的内容:

  1. 客户端应用可以使用ejabberd和
  2. 发现功能
    <feature var="urn:xmpp:push:0" /> 

被返回。但是,

    <identity category='pubsub' type='push' />

不是(但XEP-0357第4.2节是必需的-不确定这是否重要)。 2.客户端应用程序使用ejabberd创建pub子节点以进行推送通知。 3.客户端应用程序启用XEP-0357中定义的ejabberd的推送通知。我可以看到ejabberd启用了推送日志功能:

    [info] <0.524.0>@mod_push:enable:308 Enabling push notifications for u36@myserver.com/226697823346746205410
  1. 我的App Server订阅了由客户端应用程序创建的pub子节点。 Ejabberd返回
    <iq xml:lang='en' to='t1@myserver.com/4729064957403048358323' from='pubsub.myserver.com' type='result' id='or5Xh-25'><pubsub xmlns='http://jabber.org/protocol/pubsub'><subscription subscription='subscribed' subid='6152052EA877' node='u36:1' jid='t1@myserver.com'/></pubsub></iq>
  1. 向脱机应用发送消息似乎触发了mod_push,但日志中显示错误消息,表明请求无效:
    [warning] <0.427.0>@mod_push:notify:458 pubsub.myserver.com rejected notification for u36@myserver.com (u36:1), disabling push: bad-request (modify)

这是我死在水中的地方。我希望我的应用服务器会收到ejabberd的通知,但ejabberd会在日志中写入错误。

许多文档似乎已经过时,并且与我使用的版本不兼容。如果有人可以帮助我将通知从ejabberd桥接到我的应用服务器,以便最终将它们捆绑在一起,我将不胜感激。

0 个答案:

没有答案