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!');
}
这是我的 socket io 客户端,它使用 socket.io-client
const socket = io('http://localhost:3000');
socket.on("message", data => {
console.log(data);
});
很遗憾,我没有收到来自 API 的 'hi' 消息。
当我调用 /api/getAll
时,我的客户端应用程序没有收到消息。
当通过 socket.io
发出事件时,您必须在数据之前定义事件名称。
示例:
exports.getAll = function(req, res){
var io = req.app.get("socketio");
io.emit("message", "hi!");
}
现在您将能够从客户端接收 message
事件。
参考:
我在 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!');
}
这是我的 socket io 客户端,它使用 socket.io-client
const socket = io('http://localhost:3000');
socket.on("message", data => {
console.log(data);
});
很遗憾,我没有收到来自 API 的 'hi' 消息。
当我调用 /api/getAll
时,我的客户端应用程序没有收到消息。
当通过 socket.io
发出事件时,您必须在数据之前定义事件名称。
示例:
exports.getAll = function(req, res){
var io = req.app.get("socketio");
io.emit("message", "hi!");
}
现在您将能够从客户端接收 message
事件。
参考: