1

我在 Node.js 中实现了一个 XMPP 客户端(使用 node-xmpp 模块)来发送和接收来自 Android 客户端的通知:

var xmpp = require('node-xmpp');

var options =
{
    type: 'client',
    jid: process.env.GCM_PROJECT_ID+'@gcm.googleapis.com',
    password: process.env.GCM_PASSWORD,
    port: 5235,
    host: 'gcm.googleapis.com',
    legacySSL: true,
    preferred : 'PLAIN'
};
var cl = new xmpp.Client(options);

cl.connection.socket.setKeepAlive(true, 10000);

这是处理“在线”事件的地方:

cl.on('online', function() {
    console.log("online");
});

当 Node.js 服务器在本地启动时,一切正常,我能够从 Android 客户端接收上游消息以及向 Android 客户端发送下游消息。但是,当我的网络服务器在 Heroku dyno 上运行时,永远不会触发“在线”事件,因此 XMPP 客户端无法连接,我无法接收上游消息,也无法发送下游消息。

我的实现基于以下要点:https : //gist.github.com/jamesvnz/6756208 它的作者提供了示例 node.js 服务器代码来实现将与 Android 的 Google Cloud Messaging (GCM) 设备集成的 XMPP 服务器到云”消息功能 - CCS。

所以,我不明白为什么 XMPP 客户端在 Heroku 上运行时无法连接,但在 localhost 上运行良好。

4

1 回答 1

1

Xmpp 在 Heroku 上不起作用 :(。我不知道为什么,但它在他们的网站上说得很清楚

于 2015-08-17T12:59:51.113 回答