这是很多问题,您可能需要考虑将其分解为更容易回答的部分,这些部分与您想要实现的目标更直接相关。同时,我将尝试为您的每个问题提供简短的回答:
我首先关心的是目前离线应用程序 API 的可靠性。
相当可靠,它们已在大多数主要 Web 浏览器(IE 除外)的多个版本中实现。
Web 应用程序是通过访问您最初下载应用程序的相同 url 访问(离线)的吗?
是的。一旦离线应用程序被缓存,应用程序就会从该缓存中提供。NETWORK
除非您从清单的或部分明确请求 URLFALLBACK
或根本不包含在清单中,否则不会发出任何网络请求,除非检查清单本身是否已更改。
这个离线应用程序仍然需要能够与本地服务器通信,理想情况下我希望避免托管 Web 服务器,但是套接字连接是合理的。
Web Socket 仍然需要一个 Web 服务器。Web Socket的初始握手是通过 HTTP 进行的。 Web Socket 与 TCP/IP 中的套接字不同。
当浏览器离线时,websockets 目前的工作情况如何?
它们根本不起作用,当您将浏览器设置为离线模式时,它根本不会发出任何网络请求。请注意,设置为离线的浏览器与“离线 API”中的离线不同。离线 API 主要关心是否可以访问托管应用程序的服务器,而不是浏览器当前是否连接到网络或该网络是否连接到 Internet。如果服务器出现故障,则应用程序就像用户计算机上的网络电缆被拔掉一样“离线”。阅读这篇博文,尤其是评论。我常用的检测离线状态的方法是在FALLBACK
部分,以便您在在线时获得一个,而在离线时获得另一个 - 使用 AJAX 请求该文件并查看您获得的内容。
即使没有活动的互联网连接,是否有可能运行完全联网/交互式浏览器应用程序?
是的,但我不认为这意味着你认为它的作用。如果不通过 Web 服务器,在不同机器上的不同浏览器上运行的应用程序的单独实例将无法相互通信。但是,网络服务器并不要求“在互联网上”,它可以在本地网络上正常运行。