如何维护页面之间的WebSockets连接?
在我的一个脚本中,我有以下代码:
var webSocket = window.WebSocket || window.MozWebSocket;window.ws = new webSocket('ws://64.121.210.140:2585/consoleappsample', 'my-protocol');
哪个工作正常。但是,当用户更改页面时,我必须重新建立连接。我相信这会在我的代码中引起问题,因为如果客户端将数据发送到服务器,然后更改页面,则可能无法接收到数据并且正在发生争用情况。
我试图将window.ws
in 放到全局范围内,但似乎并不能解决问题。WebSockets连接是否可以在页面之间持久保存,因此不需要不断地重新建立连接?
回答:
您提到的全局范围始终与JavaScript上下文相关,并且为每个窗口创建一个上下文(并在从内存中卸载文档时销毁了该上下文)。因此,您的工作没有用:如果用户更改页面,则无法保持连接打开。当然,您可以将webapp作为“单页”应用程序使用,其中所有数据都使用XMLHttpRequest
/ ajax / WebSocket加载。因此,离开页面意味着离开/关闭应用程序,并有意义地关闭套接字。
另一种古老的方法是将页面放在框架中,用户仅在框架中导航(即使它占据了整个窗口的大小)。这样,您可以在最顶部的窗口中创建WebSocket,该窗口永远不会更改(这也意味着在位置栏中显示的URL将始终相同)。
话虽如此,我同意@dystroy的观点:您的应用程序应始终能够处理这种情况-用户可能会遇到一些网络问题,即使它没有离开页面,也可能会暂时失去连接。
以上是 如何维护页面之间的WebSockets连接? 的全部内容, 来源链接: utcz.com/qa/401705.html