我正在使用express和node来托管服务器。我也有socket io,我试图通过保存他们的socket.id来跟踪用户。但是,我有两个页面到webapp,一个登录,一个用于实际内容。
app.get("/", function(req, res) {
res.sendFile(__dirname + "/login.html")
})
app.get("/content", function(req, res){
res.sendFile(__dirname + "/index.html");
})
在我的login.html中,我必须登录用户,然后点击一下按钮,我将window.location.href设置为链接到index.html。由于客户端套接字io是在login.html和index.html中创建的;从登录名更改为索引会刷新实例,为用户提供一个新的socket.id.我如何绕过这个并链接访问login.html然后重定向到index.html作为同一用户的用户?
答案 0 :(得分:0)
我建议在成功登录时向客户端发送访问令牌,然后他们可以将其存储在localStorage或cookie中;在页面加载之间持久存在。
然后,当他们加载任何其他页面时,您将向上发送令牌以验证websocket连接。除了识别用户之外,这还有一个额外的优点,即允许您保护websocket连接。
这是一个快速,非常简短的例子
lazy: false
答案 1 :(得分:0)
您应该使用会话来保存套接字ID,不要将ID保存到客户端
了解详情:https://www.npmjs.com/package/express-socket.io-session
答案 2 :(得分:0)
它基本上是不可能的,如此stackoverflow帖子中所述:
how to handle page reload in socket.io client chat applications
但是,如上面的回答所述,您可以: