簡體   English   中英

SocketIO 通過 API 路由向客戶端發送消息

[英]SocketIO send message to client via API route

我在我的express API 中有一條路線,我想使用websocket向客戶端發送消息。 在這種情況下,客戶端是另一個 Node.js 應用程序。 在這個 Node.js 應用程序中,我嘗試連接到套接字並打印收到的消息。 API 和 Node 應用程序都在不同的端口上。 有人可以幫我完成這項工作嗎?

這是我將套接字傳遞給我的快速路由的方法:

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

這是我的套接字 io 客戶端,它使用socket.io-client

const socket = io('http://localhost:3000');

socket.on("message", data => {
    console.log(data);
});

不幸的是,我沒有收到來自我的 API 的“嗨”消息。

當我調用/api/getAll時,我的客戶端應用程序中沒有收到消息。

通過socket.io發出事件時,您需要在數據之前定義事件名稱。
例子:

exports.getAll = function(req, res){
    var io = req.app.get("socketio");
    io.emit("message", "hi!");
}

現在您將能夠從客戶端接收message事件。

參考:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM