gpt4 book ai didi

javascript - Express - 如何在路由文件中使用 io.socket.emit?

转载 作者:行者123 更新时间:2023-11-30 10:03:47 24 4
gpt4 key购买 nike

我有一个带有 express (nodeJS) 的应用。

想要在 DB 上写入一些数据时发出 io.socket,因此需要在路由文件中发出(例如/routes/save.js)

这是我的 app.js

var express = require('express');
var save = require('./routes/save');
var http = require('http');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
......
io.on('connection', function(socket){
socket.on('newTweet', function(msg){
io.emit('newTweet', msg);
});
});

app.use('/save', save);
.....
module.exports = app;
server.listen(3000, function () {
var host = server.address().address
var port = server.address().port
})

你能帮我在 /routes/save.js 中写 io.socket.emit('event') 吗?

最佳答案

我找到了一个方法。

app.use('/save', save);之前需要在app.js

中编写如下代码
app.use(function(req, res, next) {
req.io = io;
next();
});

然后从 save.js 中的 req 参数获取 io例如

var express = require('express');
var router = express.Router();

router.post('/', function(req, res, next) {
.....
var io = req.io;
io.emit('newTweet', 'test');
.....
});

module.exports = router;

如果你知道比这更好的方法,请告诉我。

关于javascript - Express - 如何在路由文件中使用 io.socket.emit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348852/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com