如果用户打开新页面或刷新页面,有一些方法可以在客户端保持相同的socket.io连接,可能会将套接字存储在会话中,或者这是不可能的?
答案 0 :(得分:11)
这是不可能的。更改或刷新页面时,您无法保持相同的socket.io或webSocket客户端连接。浏览器根本不这样做。加载新页面或刷新当前页面时,浏览器将关闭并释放上一页中的所有资源,包括socket.io/webSocket连接。
因此,您的服务器必须从新加载的页面获得新的socket.io连接。如果您使用cookie或服务器端会话对象,您可以在服务器上识别何时来自您之前看到的客户端的连接,然后服务器可以相应地采取行动以意识到这只是以前的客户端重新连接在新的页面上。
答案 1 :(得分:0)
现在看来,WebWorker 是一种更广泛的技术,可用于共享 websocket。
如本文所述https://crossbario.com/blog/Websocket-Persistent-Connections/ Webworker 是在“页面线程”之外运行的 Javascript,因此不会在页面更改时删除。 请注意,它仅在同一域中运行。 您也可以在此处查看 Kanaka 的回答How to maintain a WebSockets connection between pages?(2012-2017 年的回答当心)