Как использовать Экспресс с Socket.io ?

#node.js #sockets #express #socket.io

#node.js #сокеты #экспресс #socket.io

Вопрос:

У меня есть экспресс-код в JS-файле сервера:

 app.post('/confirm', function (req, res) {
   // Here I need to send socket with emit()
});
  

Ниже приведен код, который у меня есть Socket.io:

 io.on('connection', function (client) {
   // All methods
});
  

Проблема в том, что я не могу получить доступ к socket экспресс-методу app.post() in и не могу отправлять данные с помощью POST action.

Как я могу это использовать?

Комментарии:

1. Вы должны хранить их отдельно, потому что сокет. io использует протокол ws и wss, в то время как экспресс-метод использует http и htpps

2. youtube.com/watch?v=6bXpq1xiDsQ

Ответ №1:

Вы можете передавать данные в определенные подключенные сокеты, используя следующее:

 io.to(socket_id).emit('something', {"bar":"foo"});
  

Переменная «socket_id», как, вероятно, догадались, socket.id из подключенной розетки.

Вероятно, вам придется сохранить их вместе с какой-либо другой идентификацией в массиве или объекте, чтобы позже отправлять данные нужным клиентам с использованием экспресс-маршрутов.

PS: Поскольку ваш код

 io.on('connection', function (client) {
   // All methods
});
  

вы бы использовали client.id для получения идентификатора сокета.