将请求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
函数)直接在套接字中获取req
和res
对象。 看文档 。
然后我可以在req.user
中findsocket.request.client.user
。