Ich habe einen XMPP-Client in Node.js implementiert (mit dem Modul node-xmpp), um Benachrichtigungen von einem Android-Client zu senden und zu empfangen:
var xmpp = require("node-xmpp");
var options =
{
type: "client",
jid: process.env.GCM_PROJECT_ID+"@gcm.googleapis.com",
password: process.env.GCM_PASSWORD,
port: 5235,
host: "gcm.googleapis.com",
legacySSL: true,
preferred : "PLAIN"
};
var cl = new xmpp.Client(options);
cl.connection.socket.setKeepAlive(true, 10000);
und hier wird das Ereignis "online" behandelt:
cl.on("online", function() {
console.log("online");
});
Wenn Knoten.js server ist lokal gestartet alles funktioniert gut und ich bin in der Lage, Upstream-Nachrichten von Android-Clients zu erhalten sowie Downstream-Nachrichten an Android-Clients zu senden. Wenn mein Webserver jedoch auf einem Heroku-Dyno läuft, wird das "Online" -Ereignis niemals ausgelöst, daher verbindet sich der XMPP-Client nicht und ich kann keine Upstream-Nachrichten empfangen oder Downstream-Nachrichten senden.
Meine Implementierung basierte auf folgendem Grund: https://gist.github.com/jamesvnz/6756208 Hier stellt der Autor den node.js-Servercode bereit, um einen XMPP-Server zu implementieren, der in die Google Message Messaging-Funktionalität von Google Cloud Messaging (GCM) integriert werden kann - CCS.
Also, ich kann nicht verstehen, warum der XMPP-Client keine Verbindung herstellt, wenn er auf Heroku läuft, funktioniert aber perfekt auf localhost.
Antworten:
1 für die Antwort № 1Xmpp arbeitet nicht an Heroku :(. Ich bin mir nicht sicher warum, aber es steht sehr deutlich auf ihrer Website