如何在控制器中使用 socket.io
Posted
技术标签:
【中文标题】如何在控制器中使用 socket.io【英文标题】:How to use socket.io in a controller 【发布时间】:2022-01-03 14:11:49 【问题描述】:当用户使用我的应用登录时,我会尝试获取所有用户列表。
//example code which i want
router.post('/log',loging)
exports.login= (req,res)
if(email and password matched)
//also pushed user in array
io.emit('users',array)
else
//just returning message to client
请指导我。
【问题讨论】:
使用中间件! @ADEEL 【参考方案1】:我可以想到 2 个选项:
A.使用app.set
对于Express 5.x
,您可以使用app.set
和app.get
将内容附加到您的服务器实例。像这样:http://expressjs.com/en/5x/api.html#app.set
// where you setup your webserver and socket.io instance
app.set('io', io);
// in your controller
function (req, res)
req.app.io.emit('users', array);
B.从模块中导出io
实例
将您的 io
实例创建外包到另一个文件并从那里导出。它总是会给你相同的实例。
//io-setup.js
const io = require('socket.io').listen(server);
module.exports = io;
// in your controller
const io = require('./io-setup.js');
function (req, res)
io.emit('users', array);
【讨论】:
以上是关于如何在控制器中使用 socket.io的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中创建 Socket.io 客户端以与 Sails 服务器通信
Node.js + AngularJS + Socket.io:推送的数据在控制器中不可用