所以我一直在考虑构建一个非常复杂的应用程序。构建html5版本的想法已经变得非常有吸引力。不过,我先问了几个问题。
我首先要关注的是离线应用程序API目前的可靠性。我一直在研究这个标准:http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html它看起来很容易实现和使用,但我想知道它是多么容易使用?假设您设置清单等,是否只是通过访问您最初下载应用程序的相同URL来访问(离线)Web应用程序?
我的另一个问题是使用套接字。这个离线应用程序仍然需要能够与本地服务器通信,理想情况下我希望避免必须托管Web服务器,但是套接字连接可能是合理的。当浏览器脱机时,websockets目前的工作情况如何?即使没有活动的互联网连接,是否有可能运行完全联网/交互式浏览器应用程序? (首次下载应用程序后)
任何见解都会很棒!
答案 0 :(得分:2)
这是很多问题,您可能需要考虑将其分解为更容易回答的部分,这些部分与您正在尝试实现的内容更直接相关。与此同时,我会尝试为您的每个问题提供一个简短的答案:
我首先关注的是离线应用程序API的可靠性 那一刻。
相当可靠,它们已在a number of versions across most major web browsers (except IE)实施。
是刚访问(离线)的Web应用程序 您最初从?
下载了该应用程序的URL
是。缓存离线应用程序后,将从该缓存中提供应用程序。除非您明确地从清单的NETWORK
或FALLBACK
部分请求URL或者根本不包含清单,否则不会发出任何网络请求,除了检查清单本身是否已更改。
此脱机应用程序仍需要能够与之通信 本地服务器,理想情况下我想避免托管网络服务器, 然而,套接字连接似乎是合理的。
Web Socket仍然需要Web服务器。 initial handshake for a Web Socket is over HTTP。A Web Socket is not the same thing as a socket in TCP/IP。 this blog post
当浏览器脱机时,websockets目前的工作情况如何?
它们根本不起作用,当您将浏览器设置为离线模式时,它根本不会发出任何网络请求。请注意,设置为离线的浏览器与“离线API”中的离线功能不同。离线API主要关注是否可以访问托管应用程序的服务器,而不是浏览器当前是否连接到网络或该网络是否连接到互联网。如果服务器出现故障,则应用程序就像“离线”一样,就好像用户计算机上的网络电缆已拔下插头一样。请仔细阅读{{3}},特别是评论。我检测离线状态的常用方法是在FALLBACK
部分设置一对文件,以便在线时获得一个文件,在离线时获得另一个文件 - 使用AJAX请求该文件,看看你得到了什么。
是否有可能拥有一个完全联网/互动的浏览器 应用程序即使没有活动的互联网连接也能运行?
是的,但我不认为这意味着你的想法。在不同机器上的不同浏览器上运行的应用程序的单独实例无法通过Web服务器相互通信。但是,没有要求网络服务器“在互联网上”,它可以很好地坐在本地网络上。