无法使用 Node.js + XMPP 接收上游 GCM 消息
Unable to receive upstream GCM messages with Node.js + XMPP
我是 node.js 和 XMPP 的新手,但不是 Javascript 或 GCM 的新手。我无法使用 node-xmpp
接收上游消息,并且 none 的回调被调用,甚至 error
也无法接收。我查看了其他 SO 线程,但 none 的解决方案有效。这是我的整个路线:
var express = require('express');
var router = express.Router();
var xmpp = require('node-xmpp');
router.get('/', function(req, res, next) {
var options = {
type: 'client',
jid: 'project-12345@gcm.googleapis.com',
password: 'apiKey12345',
port: 5235,
host: 'gcm.googleapis.com',
legacySSL: true,
preferredSaslMechanism : 'PLAIN'
};
// this prints correctly
console.log('Creating xmpp app');
var cl = new xmpp.Client(options);
cl.connection.socket.setTimeout(0);
cl.connection.socket.setKeepAlive(true, 10000);
// None of these callbacks are called
cl.on('online', function() {
console.log('online');
});
cl.on('connection', function() {
console.log('online');
});
cl.on('authenticate', function(opts, cb) {
console.log('authenticated');
});
cl.on('error',function(e) {
console.error(e);
});
cl.on('stanza', function(stanza) {
console.log(stanza);
});
res.render('index', { title: 'GCM upstream test' });
});
module.exports = router;
谢谢
OP 在这里:问题是因为路由在到达 res.render
时终止了 XMPP 操作。从路由中删除 XMPP 代码后,我得到一个 XMPP authentication failure
,这很可能是由于不正确的 jid/password。项目要求已经改变,我不再需要上游消息,所以我不会尝试修复身份验证失败。
感谢您的回复
我是 node.js 和 XMPP 的新手,但不是 Javascript 或 GCM 的新手。我无法使用 node-xmpp
接收上游消息,并且 none 的回调被调用,甚至 error
也无法接收。我查看了其他 SO 线程,但 none 的解决方案有效。这是我的整个路线:
var express = require('express');
var router = express.Router();
var xmpp = require('node-xmpp');
router.get('/', function(req, res, next) {
var options = {
type: 'client',
jid: 'project-12345@gcm.googleapis.com',
password: 'apiKey12345',
port: 5235,
host: 'gcm.googleapis.com',
legacySSL: true,
preferredSaslMechanism : 'PLAIN'
};
// this prints correctly
console.log('Creating xmpp app');
var cl = new xmpp.Client(options);
cl.connection.socket.setTimeout(0);
cl.connection.socket.setKeepAlive(true, 10000);
// None of these callbacks are called
cl.on('online', function() {
console.log('online');
});
cl.on('connection', function() {
console.log('online');
});
cl.on('authenticate', function(opts, cb) {
console.log('authenticated');
});
cl.on('error',function(e) {
console.error(e);
});
cl.on('stanza', function(stanza) {
console.log(stanza);
});
res.render('index', { title: 'GCM upstream test' });
});
module.exports = router;
谢谢
OP 在这里:问题是因为路由在到达 res.render
时终止了 XMPP 操作。从路由中删除 XMPP 代码后,我得到一个 XMPP authentication failure
,这很可能是由于不正确的 jid/password。项目要求已经改变,我不再需要上游消息,所以我不会尝试修复身份验证失败。
感谢您的回复