#node.js #express #socket.io
#node.js #экспресс #socket.io
Вопрос:
В моем express
API есть маршрут, по которому я хочу отправлять сообщения клиенту с помощью websocket. В этом случае клиент является другим Node.js приложение. В этом Node.js приложение, я пытаюсь подключиться к сокету и распечатать полученные сообщения. И API, и приложение узла находятся на разных портах. Может кто-нибудь помочь мне сделать эту работу?
Вот как я передаю свой сокет своим экспресс-маршрутам:
const server = app.listen(PORT, () => {
console.log(`Server on port ${PORT}`);
});
const io = require("socket.io")(server);
app.set("socketio", io);
Вот мой маршрут REST API:
exports.getAll = function(req,res){
var io = req.app.get('socketio');
io.emit('hi!');
}
Вот мой клиент ввода-вывода сокета, он использует socket.io-client
const socket = io('http://localhost:3000');
socket.on("message", data => {
console.log(data);
});
К сожалению, я не получаю сообщение «привет» от моего API.
Когда я звоню /api/getAll
, я не получаю сообщение в своем клиентском приложении.
Ответ №1:
При отправке события через socket.io
вас вы определяете имя события перед данными.
Пример:
exports.getAll = function(req, res){
var io = req.app.get("socketio");
io.emit("message", "hi!");
}
Теперь вы сможете получать message
событие от клиента.
Ссылка: