将req res对象传递给socket.io?

时间:2014-03-25 21:42:45

标签: javascript node.js mongodb sockets

当我需要从路由文件传递数据时,我有点困惑如何与套接字进行交互。我使用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);

1 个答案:

答案 0 :(得分:-1)

您可以通过调用req(通过res提供的socket.request函数)直接在套接字中获取Getter__proto__个对象。 See docs

然后我可以在req.user中找到socket.request.client.user

相关问题