无法连接到 Firebase 以进行云消息传递

Posted

技术标签:

【中文标题】无法连接到 Firebase 以进行云消息传递【英文标题】:Could not connect to Firebase for Cloud Messaging 【发布时间】:2016-07-01 18:05:41 【问题描述】:

我正在尝试使用 Node.js 中的 xmpp 协议连接到 Firebase Cloud Messaging Server (CCS)。到目前为止,我没有成功。

我正在使用 node-xmpp-client 库,它给了我以下错误:

 [Error: connect ETIMEDOUT 64.233.191.188:5235]
  code: 'ETIMEDOUT',
  errno: 'ETIMEDOUT',
  syscall: 'connect',
  address: '64.233.191.188',
  port: 5235 

这是我的代码:

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

var client = new Client(
  jid:      '<my sender id>@gcm.googleapis.com',
  password: '<my server key>',
  host:     'fcm-xmpp.googleapis.com',
  port:     5235
);

client.connection.socket.on('error', function (error) 
  console.log("socket error");
  console.error(error);
  process.exit(1);
);

client.on('online', function (data) 
  console.log('Connected as ' + data.jid.local + '@' + data.jid.domain + '/' + data.jid.resource);
);

client.on('error', function (err) 
  console.log("server error");
  console.error(err);
  process.exit(1);
);

【问题讨论】:

对此我不确定,但可能与您的jid (gcm...) 和host (fcm...) 有关。我认为它应该是相同的fcm?可以试试吗? @intj 感谢您的评论,但它也失败了...... 只使用您的jid 的发件人ID 怎么样?删除@gcm.googleapis.com?我想我记得一个类似的帖子,但我不完全确定。 @intj 感谢您的跟进。但它也没有用 嘿@JamshidAsadzadeh 怎么样?您是否仍然遇到此错误?您还可以验证您使用的是什么类型的 API 密钥吗? 【参考方案1】:

尝试使用 Client.Client 并添加 legacySSl 和 preferredSaslMechanism

const XMPP = require('node-xmpp-client');
this._client = new XMPP.Client(
        jid: `$config.id@gcm.googleapis.com`,
        password: config.key,
        port: config.port,
        host: config.host,
        legacySSL: true,
        preferredSaslMechanism: 'PLAIN'
      );

这对我有用

【讨论】:

以上是关于无法连接到 Firebase 以进行云消息传递的主要内容,如果未能解决你的问题,请参考以下文章

XMPP 与 Firebase 云消息传递的连接断开

无法将iOS CriticalAlert发送到Firebase云消息传递

Web 应用程序中未收到 Firebase 云消息传递通知

Firebase 云消息传递 REST API Spring

无法在 angularjs App 中配置 Firebase 云消息传递。

Firebase 云消息传递 - iOS - 未注册或无法订阅主题