在页面之间重用websocket



有没有一种方法可以在一个页面上打开一个websocket,然后在另一个页面(例如,在同一个选项卡中,用户单击链接后)重用它,而不是在每次加载页面后都打开一个新的websocket?浏览器存储是否能够容纳打开的插槽?

其目的是能够为每个用户(或选项卡)保留一个websocket,这样做将非常好,而不需要以非传统的方式在页面之间移动,例如每次用户与页面交互时使用Javascrpt将内容加载到div中。

答案是

即使调用mySocket.close();没有显式关闭套接字,浏览器也会在重新加载时关闭套接字。

我尝试将Web套接字对象存储在本地存储中,并再次使用它来检索数据。返回的对象是有效的,但连接已不存在。因为,当页面重新加载时,套接字会不正常地终止。

服务器端的消息说:

[Errno 10053] An established connection was aborted by the software in your host machine

给你。。。

不同的方法是在不同的页面上保留用户而不是套接字。我的意思是,你用javascript将客户端的ID存储在cookie中,每次用户试图从你的任何网站页面打开一个新的套接字时,你都会将这个ID发送到服务器,然后服务器就可以知道这个新连接来自同一用户。

我在最近的一个项目中做到了这一点,效果很好:)根据你的计划,你可以用他的ID将用户的状态保存在服务器上,或者将其存储在其他cookie中,或者使用flash将其存储到共享对象中!

Shared Web Workers将允许您共享从同一来源/站点加载的多个选项卡的WebSocket连接。

共享网络工作者目前仅在Chrome、Safari和Opera上受支持。

websocket连接本质上是从HTTP升级到WSS的HTTP连接。它通过TCP连接,一旦客户端/服务器离开它,它就会关闭。

您可以将连接数据存储到localStorage/cookies/其他任何位置,但仅此而已。一旦页面重新加载,服务器就会终止连接数据。

所以,答案是否定的。连接不能在页面重新加载时持久化。

相关内容

  • 没有找到相关文章

最新更新