【发布时间】:2012-03-06 06:01:59
【问题描述】:
有没有办法在一个页面上打开一个 websocket,然后在另一个页面上重用它(例如在同一个选项卡中,在用户单击链接后),而不是在每个页面加载后打开一个新的 websocket ?浏览器存储是否能够保持打开的套接字?
目标是能够为每个用户(或选项卡)保持一个 websocket,这样做会很棒,而无需以非传统方式在页面之间移动,例如使用 Javascrpt 将内容加载到 div每次用户与页面交互时。
【问题讨论】:
-
创建 websocket 连接时,存在某种状态,连接的双方都必须跟踪该状态以使连接存在。我认为,如果您将连接的客户端状态存储在本地存储中(请注意,必须修改 websocket 系统的客户端以允许大多数甚至所有 websocket 客户端不支持这一点据我所知),您也许可以稍后或什至在另一个页面上重新打开连接(只要服务器没有丢弃它的一半状态)。所以这一定是可能的,但如何呢?我想看看一个工作样本。
-
我想像服务器一样“重新创建”websocket 也必须支持它。或者更具体地说,用于在服务器上实现 websocket 支持的库。我怀疑服务器上的大多数实现会在检测到底层 TCP 连接已关闭时结束 websocket - 尽管您建议的对客户端的更改可以使其保持打开状态。
-
是的,一个 websocket 连接并不比作为传输创建的 tcp 连接更有效,好吧,我认为它们更聪明。
-
@kanaka,不,不是。这与 websockets 有关,您的链接是关于 web 工作者的,它们是两种独立的技术。
标签: websocket