当客户端刷新或打开新页面时,Socket.io在客户端保持连接

Joh*_*ohn 6 websocket node.js socket.io

如果用户打开新页面或刷新页面,有一些方法可以在客户端保持相同的socket.io连接,可能会将套接字存储在会话中,或者这是不可能的?

jfr*_*d00 13

不可能.更改或刷新页面时,您无法保持相同的socket.io或webSocket客户端连接.浏览器根本不这样做.加载新页面或刷新当前页面时,浏览器将关闭并释放上一页中的所有资源,包括socket.io/webSocket连接.

因此,您的服务器必须期望从新加载的页面获得新的socket.io连接.如果您使用cookie或服务器端会话对象,您可以在服务器上识别何时来自您之前看到的客户端的连接,然后服务器可以相应地采取行动以意识到这只是以前的客户端重新连接在新的页面上.

  • @FedericoCapaldo - 您的cookie方案通常称为会话,是大多数服务器从一个页面到另一个页面跟踪客户端的方式 - 这就是cookie的用途.它也可以用于常规的http请求或传入的webSocket请求(所有webSocket连接都以http请求开头,因此它们在连接时会得到cookie).如果您使用express与node.js,那么有一个快速会话模块可以为您执行大量会话管理工作,并创建这些会话的列表,并根据cookie自动将它们与每个传入连接相关联. (3认同)