2014-03-27 71 views
3

我有一个web应用程序,其中永久连接从服务器到它的客户端(浏览器)是需要的为了实时(近)推送新闻/更新到客户端。这不会是如此棘手,如果通过网站的一些元素的导航不会导致整个页面refreshs即使页面刷新后,Websocket连接如何保持持久性?

轮询(标准方式或长轮询)新闻服务器是不是一种选择,因为它会导致不必要的经常调用的请求(因为没有消息可用)。此外,消息可能随机上涨。因此,使用轮询策略,服务器将关闭... 对于websocket(双向通信通道),客户端和服务器必须接受升级到websocket。 讨论了类似的问题here,但没有找到令人满意的解决方案。

数据可以通过将其存储在cookie或其他方式生存刷新整个页面:

  • 饼干
  • window.name(www.thomasfrank.se/sessionvars.html)
  • localStorage的:专卖店数据没有到期日期。浏览器关闭时,数据不会被删除 。示例:Perseverance(github.com/viseztrance/perseverance)
  • PersistJS:跨浏览器客户端持久存储没有cookie存储 Javascript对象是通过序列化/反序列化对象完成的。

是否有类似于运行像websockets对象的东西?

一些可能性我认为,主要有:

  • 老式风格的“解决方案”将是把整个Web应用程序中的iFrame并添加(帧)到最外面的窗口中的连接。这不是一种选择,因为它会导致很多不同的其他问题。
  • 的自HTML5 Share Web Workers退出,但因为有限的浏览器支持这个,也不能使用。

所以我的问题是:有没有可能/破解如何保持我的websocket连接打开,如果页面刷新?这样我就不必重新初始化到服务器的连接了?

回答

0

答案很简单 - 最好的解决办法是改变你的服务器的一部分,所以它可以处理连接丢失和恢复(并使用cookies来保存“会话ID”或别的东西)。

因为我看不到任何要求的字面实现这一目标。甚至更多 - 你可以松不referesh但由于连接问题,因为连接(但你可以找出哪些人发生过)

相关问题