Activar un servidor NodeJS Socket.io para transmitir a través del puerto 80
Pregunta
Mecanismo de actualización de tiempo real: el usuario escribe -> PHP Guárdelo en MySQL DB -> PHP Enviar información a NodeJS -> NodeJs Envíe el cambio Todos los suscriptores -> Otros pueden notarlo en tiempo real.
El servidor Socket.io funciona bien y se ejecuta en el puerto 8080. Tengo el servidor HTTP de nodo que se ejecuta en el puerto 80. ¿Cómo puedo obtener un mensaje de activación en el servidor HTTP y enviar el mensaje a todos los clientes 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..
....
Solución
En Socket.io 0.7 debe usar lo siguiente en su lugar para enviar a todos los enchufes conectados sin una referencia de socket específica:
io.sockets.send("Messages")
Tenga en cuenta que esto es diferente a broadcast
ya que eso se enviaría a todos los enchufes excepto El socket que inició la conexión, por supuesto, necesita una referencia de socket de envío, por lo que su código actual no sería suficiente.
Cita de la página Wiki: Socket.io/wiki
Si desea enviar un mensaje a todos a todos a los que pueda hacer referencia
io.sockets
:
io.sockets.send('message');
io.sockets.emit('event');