连接 throw stropes.js 时未收到来自 Openfire Xmpp 的通信

Posted

技术标签:

【中文标题】连接 throw stropes.js 时未收到来自 Openfire Xmpp 的通信【英文标题】:Not receiving the communication from Openfire Xmpp while connecting throw stropes.js 【发布时间】:2014-07-03 07:08:37 【问题描述】:

我正在尝试创建客户聊天。我可以看到旁遮普服务器的日志为发送 - 接收。但从未显示为 Strophes Connected 做了以下设置

1)设置Xmpp服务器

wget -O openfire.deb http://www.igniterealtime.org/downloadServlet?filename=openfire/openfire_3.9.3_all.deb 并按照中所述完成设置 https://www.digitalocean.com/community/tutorials/how-to-install-openfire-xmpp-server-on-a-debian-or-ubuntu-vps 现在可以在 *****xmppserver.com 访问 openfire

2)在同一台服务器上设置旁遮普波什服务器 从github下载

https://github.com/twonds/punjab/blob/master/INSTALL.txt

并通过 twistd -ny punjab.tac 开始运行

etc/hosts 中添加为

127.0.0.1 *****xmppserver.com

3) 终于下载了最新的strophes.js 并编辑了basic.js

var BOSH_SERVICE = 'http://*****xmppserver.com:5280/http-bind';

输出显示为正在连接,永远不会连接!

function onConnect(status) 
        console.log(status);
        if (status == Strophe.Status.CONNECTING) 
            log('Strophe is connecting.');
         else if (status == Strophe.Status.CONNFAIL) 
            log('Strophe failed to connect.');
            $('#connect').get(0).value = 'connect';
         else if (status == Strophe.Status.DISCONNECTING) 
            log('Strophe is disconnecting.');
         else if (status == Strophe.Status.DISCONNECTED) 
            log('Strophe is disconnected.');
            $('#connect').get(0).value = 'connect';
         else if (status == Strophe.Status.CONNECTED) 
            log('Strophe is connected.');
            log('Send a message to ' + connection.jid +
            ' to talk to me.');

            connection.addHandler(onMessage, null, 'message', null, null,  null);
            connection.send($pres().tree());
        
    

【问题讨论】:

从未使用过旁遮普语,但 Openfire 有自己的内置 BOSH conn 管理器。您可以在 Openfire 的管理面板上启用它:服务器 > 服务器设置 > HTTP 绑定。在您的“http://*****xmppserver.com:7070/http-bind/”上尝试使用它。 也尝试过,但出现以下错误 XMLHttpRequest cannot load http://******xmppserver:7070/http-bind。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'localhost'。 您在本地主机上运行哪个服务器?如果 Apache 则添加类似 ProxyPass /http-bind http://******xmppserver:7070/http-bindProxyPassReverse /http-bind http://******xmppserver:7070/http-bind 的代理。 那么你的 bosh url 将是http://localhost/http-bind/,并注意 http-bind 末尾的额外“/”。这对 Strophe 至关重要。 额外的“/”是问题所在。使用 7070 一切正常 :) 并且没有向 apache 服务器添加任何 ProxyPass,我的基本疑问是我们将 bosh punjab 放在两者之间 【参考方案1】:

您可以尝试使用 Openfire 内置的 BOSH http 连接管理器。在 Openfire 的管理面板上启用它:Server > Server Settings > HTTP Binding,那么 BOSH URL 应该是这样的

var BOSH_SERVICE = 'http://*****xmppserver.com:7070/http-bind/';

/http-bind 的末尾加上/ 对Strophe 至关重要。

【讨论】:

你能不能把它改成 7070 而不是 5280 我试过用 5280 但没有得到。 7070 工作正常

以上是关于连接 throw stropes.js 时未收到来自 Openfire Xmpp 的通信的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 intellij 部署时未连接服务器

尝试连接时未找到 H2 驱动程序

在 Spring Boot 和 Oracle 中使用 STRUCTS 时未释放连接

通过 FCM 发送时未收到推送通知,但在 IOS 上通过 APN 发送时收到

应用程序被杀死时未收到 IOS 13 VOIP 推送通知

我收到状态 401 错误:当我尝试通过 keycloak 调用我的 Secured API 时未授权