gpt4 book ai didi

node.js - Node js多路由获取socket

转载 作者:太空宇宙 更新时间:2023-11-04 00:49:05 24 4
gpt4 key购买 nike

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

最佳答案

首先,要了解“哪个用户”本身,您需要一个具有 session 和 cookie 的系统,以便在每次发出不同请求时识别特定用户。 Passport.JS让这变得非常容易。

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

最后,当客户端Socket.io通过io.connect()向服务器发起连接请求时,它会将请求的referrer header设置为当前URL,该URL可以在服务器上访问-side 与 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
});

关于node.js - Node js多路由获取socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33320467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com