节点js多个路由获取套接字

时间:2015-10-24 16:25:11

标签: node.js express socket.io

我正在使用NodeJS,socket.io和express来创建一个应用程序,我想知道如何确定哪个套接字(id / user)在哪个路由器上? 例如,我的网站上有10个用户,我有3个路由:/ home,/ about,/ contact。我怎么知道哪个用户在哪个路由器上?

1 个答案:

答案 0 :(得分:1)

首先要知道"哪个用户"本身,您需要一个具有会话和cookie的系统,以便在每次发出不同请求时识别特定用户。 Passport.JS让这很容易。

其次,要在Express路由和Socket.io处理程序之间共享同一个用户,需要在两者之间共享会话信息。对于Passport.js来说,socket.io-passport就是这样做的。

最后,当客户端Socket.io通过io.connect()向服务器发起连接请求时,它将请求的referrer头设置为当前URL,可以使用{{1}在服务器端访问}

有了这一切,您终于可以告诉哪个用户在哪条路线上:

socket.request.headers.referer
app.get('/about', function(req, res, next){
    // req.user is on '/about' path
});