如何在控制器中使用 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.setapp.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:推送的数据在控制器中不可用

如何在socket.io中重用redis连接?

如何在 express 和 socket.io 中使用护照?

如何在 Socket.IO 中模拟连接失败

如何在 socket.io 1.0 中获取房间的客户列表