将请求res对象传递给socket.io?

我有点困惑,当我需要从我的路由文件传入数据时,如何与套接字进行交互。 我有标准的设置,使用node.js,express,mongodb等

我将在server.js中运行我的socket.io逻辑,并在该文件中包含routes.js。

var routes = require('./app/routes');

在这种情况下,我需要在我的routes.js文件中运行一些io.sockets。

我的问题是什么是这样做的好方法? 我可以在server.js里面运行这个特定的路由,但是会变得麻烦。 如果我在我的routes.js中使用套接字,是否需要重新请求

var io = require('socket.io').listen(server);

这意味着我需要创build一个新的http服务器对象,我不喜欢,因为我需要在server.js这个文件,这似乎是一个反直觉的举动给我。

那么如何向服务器发送请求并传递一个用户名呢?

例:

 app.get('/profile', isLoggedIn, function(req, res) { res.render('profile', { user : req.user }); io.sockets.on('connection', function (socket) { console.log(socket); console.log(req.user); // Here I have access to the user and can pass that around in my sockets }); }); 

我也使用路由中间件,所以我想保留在我的routes.js,IDK我只是困惑,我应该做的,希望有人理解我的angular度在这里?

编辑:

什么东西进入路线?

 routes.initialize(app, passport); 

你可以通过调用socket.request (一个可以通过__proto__获得的Getter函数)直接在套接字中获取reqres对象。 看文档 。

然后我可以在req.user中findsocket.request.client.user