XMPP GCM服务器仅在本地运行

时间:2016-01-05 20:03:06

标签: node.js amazon-web-services amazon-ec2 google-cloud-messaging

我在Amazon EC2实例上使用Express和node-xmpp-client安装了一个小型NodeJS Web服务器,以将其用作GCM推送通知服务器。我已经设置了所有内容,但奇怪的是,只有当我在我自己的Macbook上尝试本地时它才有效,但它无法在服务器上运行:我从未收到来自NodeJS的“在线”日志消息,只是“连接....“(检查下面的代码)。我已将服务器IP添加到Google Developers Console并确保在EC2安全组上打开所需的端口,但仍然没有更改:它仅适用于本地,但在服务器上没有任何内容。代码如下所示:

var options = {
  type: 'client',
  jid: '<my user id>@gcm.googleapis.com',
  password: GCM_API_KEY,
  port: 5235,
  host: 'gcm.googleapis.com',
  legacySSL: true,
  preferredSaslMechanism : 'PLAIN'
};

xmppClient = new xmpp.Client(options);
xmppClient.connection.socket.setTimeout(0)
xmppClient.connection.socket.setKeepAlive(true, 10000)

xmppClient.on('stanza',
  function(stanza) {
    console.log("Stanza:")
    console.log(stanza.toString());
      if (stanza.is('message') && stanza.attrs.type !== 'error') {
          var messageData = JSON.parse(stanza.getChildText("gcm"));
          if (messageData && messageData.message_type == "ack" && messageData.message_type != "nack") {
             //...
          }
      } else {
          console.log("error");
          console.log(stanza);
      }
});

xmppClient.on('error', function(e) {
    console.log("Error occured:");
    console.error(e);
    console.error(e.children);
});

xmppClient.connection.socket.on('error', function(err) {
  console.log('error : ',err);
});

xmppClient.on('reconnect', function() {
    console.log('reconnecting....');
});

xmppClient.on('connect', function() {
    console.log('connecting....');
});


xmppClient.on('online', function() {
  console.log("Online");
  connected = true;
});

我只收到“连接....”日志消息。

请帮助我,我要发疯了

0 个答案:

没有答案