我已经在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服务器在本地启动时,一切工作正常,我可以接收来自安卓客户端的上行消息,也可以向安卓客户端发送下行消息。当我的When服务器在Heroku dyno上运行时,'online‘事件永远不会被触发,因此XMPP客户端无法连接,我既不能接收上行消息,也不能发送下行消息。
我的实现基于以下要点:https://gist.github.com/jamesvnz/6756208,它的作者提供了示例node.js服务器代码来实现一个XMPP服务器,该服务器将与安卓的Google Cloud Messaging (GCM)“设备到云”消息功能集成。
所以,我不明白为什么XMPP客户机在Heroku上运行时不能连接,而在localhost上却可以很好地工作。
发布于 2015-08-17 20:59:51
Xmpp在Heroku上不起作用:(我不知道为什么,但他们的网站上写得很清楚
https://stackoverflow.com/questions/29133437
复制相似问题