无法使用node-xmpp客户端连接到GCM

时间:2014-03-21 17:51:34

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

我正在尝试使用node-xmpp运行gcm服务器,但xmpp客户端似乎根本没有打开并在超时后关闭。

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

var options = {
  type: 'client',
  jid: 'fake-project-123@gcm.googleapis.com',
  password: 'ApiKeyHere',
  port: 5235,
  host: 'gcm.googleapis.com',
  legacySSL: true,
  preferredSaslMechanism : 'PLAIN'
};

console.log("Creating XMPP Application");

var cl = new xmpp.Client(options);

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

其他代码被省略了。在控制台中,我永远不会看到“XMPP Online”。 如何检查xmpp是否连接,以及无法打开的位置?

3 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,发现虽然套接字已成功打开,但从未调用过Connection.startStream()。

这是我的拉动请求: https://github.com/node-xmpp/node-xmpp-client/pull/61

在合并之前,你可以使用我的fork,它应该适用于GCM: https://github.com/Riplexus/node-xmpp-client

答案 1 :(得分:0)

我遵循了这个from gcm google groups,它对我有用。 对于超时,你可以尝试 xmppClient.connection.socket.setTimeout(0) xmppClient.connection.socket.setKeepAlive(true,10000)  不要忘记在Google控制台中将服务器IP列入白名单。

答案 2 :(得分:0)

我放弃了尝试使用node-xmpp和game smack客户端的希望。可悲的是它没有用,但我确实收到一个错误,说我的项目没有列入白名单。当项目列入白名单时,它可以从Android设备接收消息,这正是我需要的,也是我直接进入CCS(XMPP)的唯一原因。如果没有白名单,则无法使用CCS(XMPP)将消息发送到Android设备。为了使用HTTP方法,项目不需要列入白名单,但仅限于能够发送消息。我已经注册了上游GCM,但尚未收到回复。

https://services.google.com/fb/forms/gcm/