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..
....
¿Fue útil?

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');

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top