Innescare un nodeJS socket.io server per la trasmissione tramite la porta 80
Domanda
in tempo reale aggiornamento Meccanismo:. Scrive utente -> php salvarlo in mysql db -> php informazioni Invia ad nodeJS -> nodeJS inviare il cambiamento tutti gli abbonati -> altri possono notare in tempo reale
Il server Socket.io funziona bene e viene eseguito sulla porta 8080. Ho nodo http server in esecuzione sulla porta 80. Come posso ottenere un messaggio trigger sul server http e inviare il messaggio a tutti i client 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..
....
Soluzione
In Socket.IO 0.7 si deve utilizzare il seguente invece di inviare a tutte le prese collegato senza riferimento socket specifico:
io.sockets.send("Messages")
Si noti che questo è diverso da broadcast
dal momento che avrebbe mandato a tutte le prese tranne la presa che ha iniziato la connessione - naturalmente si richiede un riferimento presa di invio, che è il motivo per cui il codice corrente non sarebbe sufficiente .
Citazione dalla pagina wiki: Socket.IO/Wiki
Se vuoi mandare un messaggio a tutti è possibile fare riferimento
io.sockets
:
io.sockets.send('message');
io.sockets.emit('event');