如何在使用更改的html文件时保留套接字ID?

时间:2017-07-31 03:18:45

标签: html node.js express socket.io

我正在使用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作为同一用户的用户?

3 个答案:

答案 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

但是,如上面的回答所述,您可以:

  • 移动index.html文件中的socketio连接脚本
  • 处理服务器端的断开连接事件(取消注册/删除用户),以便在index.html页面重新加载时自然重新注册
  • 在本地/会话存储中存储您在数据库中保存的与您的用户相关的ID。