Запустите сервер Nodejs Socket.io для трансляции через порт 80

StackOverflow https://stackoverflow.com/questions/7804209

  •  25-10-2019
  •  | 
  •  

Вопрос

Механизм обновления в реальном времени: пользователь записывает -> PHP Сохраняет его в MySQL DB -> PHP Отправить информацию в Nodejs -> Nodejs Отправить изменение всех подписчиков -> Другие могут заметить его в режиме реального времени.

Сервер Socket.io работает хорошо и работает на порте 8080. У меня есть Node HTTP -сервер, работающий на порту 80. Как я могу получить триггерное сообщение на HTTP -сервере и отправить сообщение всем клиентам 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..
....
Это было полезно?

Решение

В Socket.io 0.7 вы должны использовать следующее, чтобы отправить во все подключенные сокеты без конкретной ссылки на розетку:

io.sockets.send("Messages")

Обратите внимание, что это отличается от broadcast Поскольку это отправилось бы на все розетки кроме Сокет, который инициировал соединение - конечно, вам требуется ссылка на отправку сокета, поэтому ваш текущий код не будет достаточно.

Цитата со страницы вики: Socket.io/wiki

Если вы хотите отправить сообщение всем, вы можете ссылаться на io.sockets:

io.sockets.send('message');

io.sockets.emit('event');

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top