【问题标题】:What are my offline and socket options for a modern web application?现代 Web 应用程序的离线和套接字选项是什么?
【发布时间】:2012-01-22 22:58:25
【问题描述】:

所以我一直在考虑构建一个相当复杂的应用程序。构建 html5 版本的想法已经成为一种非常有吸引力的可能性。不过,我首先有几个问题。

我首先关心的是离线应用程序 API 目前的可靠性。我一直在研究这个标准:http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html,它看起来很容易实现和使用,但我想知道它有多容易使用?假设您设置了清单等,Web 应用程序是否只是通过转到您最初下载应用程序的相同 url 访问(离线)?

我的另一个顾虑是套接字的使用。这个离线应用程序仍然需要能够与本地服务器通信,理想情况下我希望避免托管 Web 服务器,但是套接字连接是合理的。当浏览器离线时,websockets 目前的工作情况如何?即使没有活动的互联网连接,是否有可能运行完全联网/交互式浏览器应用程序? (首次下载应用后)

任何见解都会很棒!

【问题讨论】:

  • “本地服务器”是什么意思?
  • 我的意思不是同一本地网络上的机器,它们能够进行套接字连接。

标签: html web-applications websocket offline-caching offlineapps


【解决方案1】:

这是很多问题,您可能需要考虑将其分解为更容易回答的部分,这些部分与您想要实现的目标更直接相关。同时,我将尝试为您的每个问题提供一个简短的答案:

我首先关心的是离线应用程序 API 的可靠性如何 瞬间。

相当可靠,它们已为a number of versions across most major web browsers (except IE) 实现。

是刚刚访问(离线)的网络应用程序,通过相同的 您最初从哪个网址下载应用程序?

是的。一旦离线应用程序被缓存,应用程序就会从该缓存中提供。除非您从清单的 NETWORKFALLBACK 部分明确请求 URL 或根本不包含在清单中,否则不会发出网络请求,除非检查清单本身是否已更改。

这个离线应用仍然需要能够与 本地服务器,理想情况下,我希望避免托管网络服务器, 但是,套接字连接是合理的。

Web Socket 仍然需要 Web 服务器。 initial handshake for a Web Socket is over HTTPA Web Socket is not the same thing as a socket in TCP/IP.

当浏览器离线时,websockets 目前的工作情况如何?

它们根本不起作用,当您将浏览器设置为离线模式时,它根本不会发出任何网络请求。请注意,设置为离线的浏览器与“离线 API”中的离线不同。离线 API 主要关心是否可以访问托管应用程序的服务器,而不是浏览器当前是否连接到网络或该网络是否连接到 Internet。如果服务器出现故障,那么应用程序就像用户计算机上的网络电缆被拔掉一样“离线”。阅读this blog post,尤其是 cmets。我检测离线状态的常用方法是在FALLBACK 部分设置一对文件,这样您在在线时获得一个,在离线时获得另一个 - 使用 AJAX 请求该文件并查看您获得的内容。

是否有可能拥有一个完全联网/交互式的浏览器 即使没有有效的互联网连接也能运行应用程序?

是的,但我不认为这意味着你认为它的作用。如果不通过 Web 服务器,在不同机器上的不同浏览器上运行的应用程序的单独实例将无法相互通信。但是,网络服务器并不要求“在互联网上”,它可以在本地网络上运行。

【讨论】:

  • 感谢您的精彩报道!您认为可以在线托管 Web 应用程序,然后让本地 Web 服务器托管 Web 套接字连接吗?
  • @jezternz 是的,应该没问题。但是,为什么要用两个 Web 服务器使事情复杂化呢?是什么阻止您在本地 Web 服务器上托管 Web 应用程序?
  • 我希望 Web 应用程序可用于初始设置,但我希望它能够在本地连接以进行数据更新(通过 websockts)。
猜你喜欢
  • 1970-01-01
  • 2014-07-04
  • 2018-05-11
  • 1970-01-01
  • 2012-01-04
  • 2018-06-25
  • 2017-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多