gpt4 book ai didi

html - node.js、socket.io - 网站架构

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

我有一个网站,我希望有一个用户系统,无论用户在网站上的哪个位置,都可以登录

使用socket.io,我发现每个HTML页面都需要自己的socket.io连接。因此,每次用户离开一个 HTML 页面前往另一个页面时,他都会断开第一个套接字并连接另一个。

保持这种联系的最佳方式是什么?我不希望用户在每个 HTML 页面上手动登录。我认为将登录数据作为 HTML 参数传递并使用这些参数自动登录到服务器是非常愚蠢的,但目前这是我能想到的唯一解决方案。

理想情况下,socket.io 会在整个站点上使用相同的套接字。

考虑到所有具有用户系统的网站都具有所需的功能,我认为我遗漏了一些东西。

最佳答案

这里有两件事很重要:

  • 套接字重置和
  • 身份验证。

套接字断开连接

如果您离开该页面,则会断开连接。时期。您无法更改这一点,并且如果您的页面不同,则您的套接字每次都会重新连接。解决这个问题的一种方法是使用 Angular 或 Ember 等框架创建 SPA - 单页面应用程序。它基本上是客户端路由 - 捕捉您的点击并显示不同的“页面”而无需重新加载。除了保持套接字打开之外,您还可以获得不必重新加载所有共享资源、网络开销等的好处,这对移动设备来说特别有利。

但你不必这样做。

身份验证

正如其他人所建议的,您的实际问题是您的身份验证机制做得不够。即使您的套接字被重置,您的新套接字也需要重新进行身份验证。有些图书馆可以完成这项工作,或者您自己可以完成。它可以是一些简单的事情,比如获取 cookie 或某种身份验证 token ,这些 token 是您在使用套接字连接(如果存在)发送的第一次身份验证时获得的。然后根据该值进行身份验证。

通过这样的身份验证设置,您可以在常规调用和套接字调用之间共享身份验证,并且您可以在所有页面和页面重新加载上保持身份验证。

关于html - node.js、socket.io - 网站架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31382696/

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