Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用Node.js+;接收上游GCM消息;XMPP_Javascript_Node.js_Xmpp_Google Cloud Messaging_Node Xmpp - Fatal编程技术网

Javascript 无法使用Node.js+;接收上游GCM消息;XMPP

Javascript 无法使用Node.js+;接收上游GCM消息;XMPP,javascript,node.js,xmpp,google-cloud-messaging,node-xmpp,Javascript,Node.js,Xmpp,Google Cloud Messaging,Node Xmpp,我不熟悉node.js和XMPP,但不熟悉Javascript或GCM。我无法使用node xmpp接收上游消息,并且没有调用任何回调,甚至error。我查看了其他SO线程,但没有一个解决方案有效。以下是我的整个路线: var express = require('express'); var router = express.Router(); var xmpp = require('node-xmpp'); router.get('/', function(req, res, next)

我不熟悉node.js和XMPP,但不熟悉Javascript或GCM。我无法使用
node xmpp
接收上游消息,并且没有调用任何回调,甚至
error
。我查看了其他SO线程,但没有一个解决方案有效。以下是我的整个路线:

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;

谢谢这里的操作:问题是因为路由在到达
res.render
时终止了XMPP操作。从路由中删除XMPP代码后,我得到一个
XMPP身份验证失败
,这很可能是由于错误的jid/密码造成的。项目需求已经改变,我不再需要上游消息,因此我不会尝试修复身份验证失败。
感谢您的回复

OP here:问题是因为路由在到达
res.render
时终止了XMPP操作。从路由中删除XMPP代码后,我得到一个
XMPP身份验证失败
,这很可能是由于错误的jid/密码造成的。项目需求已经改变,我不再需要上游消息,因此我不会尝试修复身份验证失败。 感谢您的回复

有两个问题:1)您正在express.js服务器内运行XMPP客户端,这意味着只有在您向/发出请求后,而不是启动服务器后,才会初始化XMPP客户端套接字。2) 我在没有express.js的情况下进行了测试,节点xmpp客户端中的代码无法工作。我试着运行DEBUG=xmpp:client:session,xmpp:client node ccs.js从库中获取一些日志/调试,但只得到了“Creating xmpp app xmpp:client:session start socket connection+0ms”,然后我从应用程序发送了一条上游消息,但在服务器上我什么也看不到。我认为这是一个相关的问题。您必须调试节点xmpp客户端库并确定问题所在。有两个问题:1)您正在express.js服务器内运行xmpp客户端,这意味着xmpp客户端套接字只有在您向/发出请求后才能初始化,而不是在启动服务器后。2) 我在没有express.js的情况下进行了测试,节点xmpp客户端中的代码无法工作。我试着运行DEBUG=xmpp:client:session,xmpp:client node ccs.js从库中获取一些日志/调试,但只得到了“Creating xmpp app xmpp:client:session start socket connection+0ms”,然后我从应用程序发送了一条上游消息,但在服务器上我什么也看不到。我认为这是一个相关的问题。您必须调试节点xmpp客户端库并确定问题所在。有两个问题:1)您正在express.js服务器内运行xmpp客户端,这意味着xmpp客户端套接字只有在您向/发出请求后才能初始化,而不是在启动服务器后。2) 我在没有express.js的情况下进行了测试,节点xmpp客户端中的代码无法工作。我试着运行DEBUG=xmpp:client:session,xmpp:client node ccs.js从库中获取一些日志/调试,但只得到了“Creating xmpp app xmpp:client:session start socket connection+0ms”,然后我从应用程序发送了一条上游消息,但在服务器上我什么也看不到。我认为这是一个相关的问题。您必须调试节点xmpp客户端库并确定问题所在。