Déclenchement d'un serveur de diffusion à NodeJS via le port 80
Question
Mise à jour en temps réel mécanisme. Écriture utilisateur -> php conservez-le dans mysql db - envoyer> php information à NodeJS -> NodeJS envoyer le changement tous les abonnés -> d'autres peut-il remarquer en temps réel
Le serveur Socket.io fonctionne bien et fonctionne sur le port 8080. je noeud http serveur exécutant sur le port 80. Comment puis-je obtenir un message de déclenchement sur le serveur http et envoyer le message à tous les clients Socket.IO?
var io = require('socket.io').listen(8080);
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Message Broadcast\n');
console.log("Message Sent");
//DOES NOT SEEM TO WORK, error
io.broadcast("Messages");
//No error but no messages
io.emit("Message");
}).listen(80, "0.0.0.0");
/**
Other socket.io code which works well..
....
La solution
En Socket.IO 0,7, vous devez utiliser les éléments suivants au lieu d'envoyer à tous les sockets connectées sans référence prise spécifique:
io.sockets.send("Messages")
Notez que ceci est différent de broadcast
car cela envoyer à tous les sockets sauf la prise qui a initié la connexion - vous besoin bien sûr une référence de prise d'envoi qui est la raison pour laquelle votre code actuel ne serait pas suffisant .
Citation de la page wiki: Socket.IO/Wiki
Si vous voulez envoyer un message à tout le monde que vous pouvez faire référence
io.sockets
:
io.sockets.send('message');
io.sockets.emit('event');