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

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

首先要知道“哪个用户”本身,你需要一个带有会话和cookie的系统来在每次发出不同的请求时识别一个特定的用户。 Passport.JS使这非常简单。

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

最后,当客户端Socket.io通过io.connect()向服务器发起连接请求时,它将请求的引用标头设置为当前URL,可以在服务器端使用socket.request.headers.referer

随着这一切,你终于能够知道哪个用户在哪个路线上:

 app.get('/about', function(req, res, next){ // req.user is on '/about' path }); 
 var URL = require('url'); io.on('connection', function(socket) { var user = socket.request.user; var path = URL.parse(socket.request.headers.referer).path; // user is on -> path });