使用Socket.IO以及Express和NodeJS导出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Socket.IO以及Express和NodeJS导出相关的知识,希望对你有一定的参考价值。
我试图连接我的Express和Socket连接。我想我的设置很整齐,但不是在我想这样做的时候:
- 用户创建新房间。 POST到后端Express服务器。
- 然后
app.post()
将输入发送到导出,该导出处理所有数据库连接。 - 当它保存在数据库中时,通过套接字向所有人广播已添加新房间。
这可以单独使用套接字吗?是。但我不是那种生活。
RoomRouter.js
exports.createRoom = (req, response) => {
new Room(req.body).save((err, room) => {
response.status(200).send(room);
});
};
app.js
/*
* Express setup is left out, because we don't need to focus on that.
* "app" is const app = express();
*/
const RoomRouter = require("./RoomRouter");
app.post("/room/create", RoomRouter.createRoom);
io.on("connection", (socket) => {
//I want to broadcast the room to everyone
//io.emit("newRoom", room);
});
Express部分工作正常,POST工作正常。现在,我如何将Socket.IO连接到那个,所以我可以向所有人广播已添加新房间?
答案
我不确定你真正想要的是什么,但是如果你想在你的路线中使用socket io,我认为你必须这样声明你的路线:
RoomRouter.js
exports.createRoom = (io) => {
return (req, response) => {
new Room(req.body).save((err, room) => {
io.emit("newRoom", room);
response.status(200).send(room);
});
};
};
在你的app.js
app.post("/room/create", RoomRouter.createRoom(io));
希望能帮助到你。
以上是关于使用Socket.IO以及Express和NodeJS导出的主要内容,如果未能解决你的问题,请参考以下文章
Node.js - 在同一个端口上使用 Socket.io 和 Express
使用 Express、Socket.io 和 Node-Telegram-Bot-Api 结束 Mocha 测试
express,用于浏览器客户端和 node.js 客户端的 socket.io 服务器
让 socket.io、express 和 node-http2 通过 HTTP/2 进行通信