我在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;
});
我只收到“连接....”日志消息。
请帮助我,我要发疯了