我正试图让ejabberd通过mod_push通知我的应用服务器脱机消息(然后我的应用服务器可以与Apple和Google通信以发送通知)。启用了mod_push,我的应用程序服务器订阅了客户端pub子节点,看起来ejabberd尝试转发该消息,但失败并在日志中显示“错误请求”。
我正在将我的应用程序服务器在本地计算机(mac os)上使用ejabberd 19.02进行测试。
除了ejabberd通知我的服务器的那部分之外,我一切正常(但如果我手动调用服务器-绕过ejabberd,我可以得到通知的工作)。我尝试了很多事情,觉得自己已经接近了,但是却错过了弥合差距的关键部分。这是我到目前为止的内容:
<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
<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>
[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桥接到我的应用服务器,以便最终将它们捆绑在一起,我将不胜感激。