【问题标题】:Can't connect to GCM using node-xmpp client无法使用 node-xmpp 客户端连接到 GCM
【发布时间】:2014-04-29 05:58:50
【问题描述】:

我正在尝试使用 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 是否甚至连接,以及它无法打开的位置?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 这是我开始使用的示例。想我可能错过了什么,所以我快速复制粘贴并编辑它。问题仍然存在。设置超时似乎没有任何作用。我使用的 api 密钥在所有 IP 上都允许 0.0.0.0/0 客户端在线时应该运行的代码根本没有执行。
    • 我们可以在开发时从 localhost 连接到 ccs 服务器吗?不使用静态IP?
    • 我相信是的。在“入门”页面上,在必须输入 API 密钥的服务器 IP 的步骤中注明“出于测试目的,您可以使用 0.0.0.0/0”。
    • @jM2.me localhost 可用于连接 ccs。有用。你能看看这个stackoverflow.com/questions/22606366/…
    【解决方案2】:

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

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

    【讨论】:

    • 这也发生在我身上,尝试了 Smack 客户端,但一直收到超时异常。
    【解决方案3】:

    我遇到了同样的问题,发现连接.startStream() 从来没有被调用过,尽管套接字已经成功打开。

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

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

    【讨论】:

    • 非常好!我试图调试问题的根源,但由于我对节点不太熟悉,所以运气不佳。很高兴看到这个问题得到解决。
    猜你喜欢
    • 2013-08-27
    • 2012-07-20
    • 2012-04-14
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 2022-11-07
    相关资源
    最近更新 更多