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