Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
xmpp pubsub不传递消息_Xmpp_Publish Subscribe_Strophe - Fatal编程技术网

xmpp pubsub不传递消息

xmpp pubsub不传递消息,xmpp,publish-subscribe,strophe,Xmpp,Publish Subscribe,Strophe,我正在使用lattest Strophe.js构建一个简单的web工具来处理pubsub消息。我可以创建节点、订阅、查看表单。。。但当我发布时(服务器发出ok响应),消息永远不会转发到订阅的客户端 我正在使用ejabberd服务器和docker它有BOSH、pubsub、admin。。。而且似乎很完整。我也尝试过使用标准的jabber ubuntu安装,结果也一样 我使用两个用户登录,第一个用户可以创建一个节点,请参见订阅 $('create node').bind('click',functi

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

我正在使用ejabberd服务器和docker它有BOSH、pubsub、admin。。。而且似乎很完整。我也尝试过使用标准的jabber ubuntu安装,结果也一样

我使用两个用户登录,第一个用户可以创建一个节点,请参见订阅

$('create node').bind('click',function(){
var pub=$iq({type:'set',to:pubsubUrl})
.c('pubsub',{xmlns:'http://jabber.org/protocol/pubsub' })
.c('create',{node:nodeName()});
sendIQ(pub,pubSuccess,Suberror,5000);
});
$(“#列表订阅节点”).bind('click',函数(){
var pub=$iq({type:'get',to:pubsubUrl,from:jid()})
.c('pubsub',{xmlns:'http://jabber.org/protocol/pubsub#owner' })
.c('订阅',{node:nodeName()});
connection.sendIQ(pub.tree(),pubsucture,pubError,5000);
});
对于第二个用户,我订阅了最近创建的节点,并有效地看到第二个用户已订阅

$('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()});
sendIQ(pub,pubSuccess,Suberror,5000);
});
最后我发布了一些消息。我从服务器得到一个OK响应

$(“#发布节点”).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(项目)
.c('x',{xmlns:'jabber:x:data',类型:'result'})
.c('field',{var:'title'})
.c('value').t($('#节点事件').val());
sendIQ(pub,pubSuccess,Suberror,5000);
});
我的完整代码应用程序是为了防止您想播放/查看所有代码

现在的问题是,尽管一切似乎都很好,但我看不到从服务器到pubsub节点的订阅客户端的任何消息。。。我测试了MUC对话,一切正常当我发布节点消息时,这些消息永远不会作为消息发送给客户端。

我查阅了一些示例和书籍,我无法理解我是做错了什么,还是服务器配置问题

有什么想法吗?服务器中有没有什么地方可以让我检查引擎盖下发生了什么

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

<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>

这里有一条成功发布的消息

<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>

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

<presence xmlns='jabber:client'>
    <priority>1</priority>
</presence>

1.
存在必须是一个正值