将Websocket连接保持在多个页面上

Hold Websocket-Connection over several pages

本文关键字:Websocket 连接      更新时间:2023-09-26

我需要一个设计与C++Web服务器通信的复杂html/javascript(jQuery)系统的想法。

到目前为止,我有一个主要的index.html,我通过事件加载子模块:

$(".MainButton").click(function(){
   $("#swap").load($(this).attr('alt'));
});

现在的问题是,每个子模块都需要一个Websocket连接,我不想为我正在加载的每个子模块打开一个新的连接。

是否可以打开全局Websocket连接。。

var ws = new WebSocket("ws://localhost:800/stream");

并在每个子页面中使用ws?

非常感谢。

您的问题的标题和内容不同。至于内容,如果您通过jQuery的加载方法加载HTML片段(而不是页面),这些片段将合并到文档中,因此只有该文档存在。如果是您的情况,为什么不在main.html上打开该连接,使ws成为window的全局变量,并在子模块中使用它呢?只要子模块的URI与CORS同源或交叉,它就可以访问和操作main.html的ws

然而,如果您坚持连接应该保持在多个页面上,包括刷新main.html作为问题的标题,那么除非您使用单页应用程序,否则目前是不可能的。有关详细信息,请参见以下内容:

  • 如何维护页面之间的WebSockets连接
  • 共享Web工作者是否在单个页面重新加载、链接导航中持续存在
  • http://tavendo.com/blog/post/websocket-persistent-connections/