首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不传递消息的xmpp公共服务

不传递消息的xmpp公共服务
EN

Stack Overflow用户
提问于 2015-12-30 10:09:58
回答 1查看 457关注 0票数 3

我正在使用最新的Strophe.js构建一个简单的web工具来处理公共消息。我可以创建节点,订阅,查看表单.但是,当我发布(从服务器发出ok响应)时,消息永远不会转发给订阅的客户端。

我正在使用带有码头rroemhild/docker-ejabberd的ejabberd服务器,它有BOSH,pubsub,admin.而且看起来很完整。我也尝试了一个标准的jabber ubuntu安装,并取得了同样的效果。

我与两个用户一起登录,在第一个用户中,我可以创建一个节点,请参阅订阅。

代码语言:javascript
复制
$('#create-node').bind('click', function () {
    var pub = $iq({ type: 'set', to: pubsubUrl })
        .c('pubsub', { xmlns: 'http://jabber.org/protocol/pubsub' })
        .c('create', { node: nodeName() });
    connection.sendIQ(pub, pubSuccess, pubError, 5000);
});

$('#list-subscriptions-node').bind('click', function () {
    var pub = $iq({ type: 'get', to: pubsubUrl, from: jid() })
        .c('pubsub', { xmlns: 'http://jabber.org/protocol/pubsub#owner' })
        .c('subscriptions', { node: nodeName() });
    connection.sendIQ(pub.tree(), pubSuccess, pubError, 5000);
});

对于第二个用户,我订阅了一个最近创建的节点,并且很有成效地看到第二个用户订阅了。

代码语言:javascript
复制
$('#subscribe-node').bind('click', function () {
    var pub = $iq({ type: 'set', to: pubsubUrl })
        .c('pubsub', { xmlns: 'http://jabber.org/protocol/pubsub' })
        .c('subscribe', { node: nodeName(), jid : jid() });
    connection.sendIQ(pub, pubSuccess, pubError, 5000);
});

最后,我发布了一些信息。我从服务器得到一个OK响应。

代码语言:javascript
复制
$('#publish-node').bind('click', function () {
    var pub = $iq({ type: 'set', to: pubsubUrl, from: jid() })
        .c('pubsub', { xmlns: 'http://jabber.org/protocol/pubsub' })
        .c('publish', { node: nodeName() })
        .c('item')
        .c('x', {xmlns :'jabber:x:data', type: 'result'})
        .c('field', {var : 'title'})
        .c('value').t($('#node-event').val());
    connection.sendIQ(pub, pubSuccess, pubError, 5000);
});

我的完整代码应用程序是这个github回购,以防您想要播放/查看所有代码。

现在的问题是,尽管一切看起来都很好,但我看不出任何来自服务器的消息来订阅客户端到公共节点.我测试了MUC的对话,一切都很好。当我发布从未作为消息发送给客户端的节点消息时,

我已经查阅了几个例子和书籍,我无法理解我是做错了什么,还是服务器配置问题。

有什么想法吗?在服务器的某个地方我可以检查引擎罩下面发生了什么吗?

我的服务器调用中的一些例子。确认用户已被订阅

代码语言:javascript
复制
<body xmlns='http://jabber.org/protocol/httpbind'>
    <iq xmlns='jabber:client' from='pubsub.example.com' to='guillem@example.com/13675173711451438137658982' id='3:sendIQ' type='result'>
        <pubsub xmlns='http://jabber.org/protocol/pubsub#owner'>
            <subscriptions node='4193886472'>
                <subscription jid='admin@example.com' subscription='subscribed' subid='5AB6AF973AC7E'/>
            </subscriptions>
        </pubsub>
    </iq>
</body>

在这里,一条成功发布的信息

代码语言:javascript
复制
<body xmlns='http://jabber.org/protocol/httpbind'>
    <iq xmlns='jabber:client' from='pubsub.example.com' to='guillem@example.com/13675173711451438137658982' id='5:sendIQ' type='result'>
        <pubsub xmlns='http://jabber.org/protocol/pubsub'>
            <publish node='4193886472'>
                <item id='5AB6AFAB19CFD'/>
            </publish>
        </pubsub>
    </iq>
</body>
EN

回答 1

Stack Overflow用户

发布于 2016-01-04 09:06:59

事实证明,在未显示消息存在之前,消息不会传递给已连接的用户。

代码语言:javascript
复制
<presence xmlns='jabber:client'>
    <priority>1</priority>
</presence>

在场必须是一种积极的价值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34527337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档