当我需要从路由文件传递数据时,我有点困惑如何与套接字进行交互。我使用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);
这意味着我需要创建一个新的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我只是对我应该做的事情感到困惑,希望有人理解我的角度吗?
修改
如何将某些东西传入路线?
routes.initialize(app, passport);
答案 0 :(得分:-1)
您可以通过调用req
(通过res
提供的socket.request
函数)直接在套接字中获取Getter
和__proto__
个对象。 See docs
然后我可以在req.user
中找到socket.request.client.user
。