通过Heroku的Node.js XMPP客户端实现无法连接

时间:2015-03-18 21:55:15

标签: node.js heroku xmpp google-cloud-messaging node-xmpp

我在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云消息传递(GCM)“设备到云”消息功能集成的XMPP服务器 - CCS。

所以,我无法理解为什么XMPP客户端在Heroku上运行时没有连接,但在localhost上完美运行。

1 个答案:

答案 0 :(得分:1)

Xmpp不能用于Heroku :(。我不确定为什么,但它在他们的网站上说得很清楚