Node.js Node js多路由获取套接字

Node.js Node js多路由获取套接字,node.js,express,socket.io,Node.js,Express,Socket.io,我正在使用NodeJS、socket.io和express创建一个应用程序,我想知道如何确定哪个套接字(id/用户)位于哪个路由器上? 例如,我的网站上有10个用户,我有3条路线:/home、/about、/contact。我如何知道哪个用户在哪个路由器上 首先要知道“哪个用户”本身,您需要一个带有会话和cookie的系统,以便在每次用户发出不同请求时识别特定用户。这真的很容易 其次,要在Express route和Socket.io处理程序之间共享同一用户,需要在两者之间共享会话信息。对于Pa

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

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

其次,要在Express route和Socket.io处理程序之间共享同一用户,需要在两者之间共享会话信息。对于Passport.js,有一个函数可以实现这一点

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

所有这些就绪后,您将最终能够知道哪个用户在哪个路线上:

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

您是否也在使用某种东西(如socket.io passport)将Express会话中的用户与socket.io链接?因为这本身就是一个主题,所以我目前正在学习所有“服务器上的javascript”(node.js)是如何工作的。我有php背景,对它了解不多。是的,我听说过passport.js,但我还不知道它是如何工作的。我需要在我的网站上注册/登录功能,但我还不知道该怎么做,以及“最佳”做法是什么。签出更新的答案,希望有帮助。我会给你多次投票,但我只能投一次。:)谢谢你更新的答案!请查看我的其他node.js问题:)
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
});