【问题标题】:Web App that can connect/disconnect?可以连接/断开连接的 Web 应用程序?
【发布时间】:2011-03-07 08:17:22
【问题描述】:

我对网络应用非常陌生,所以这可能是一个非常愚蠢的问题。基本上我想要一个与数据库同步的网络应用程序,它还应该能够发送将与数据库同步的数据。

我的问题是关于停机时间。如果 web 应用程序失去了网络连接,有没有办法让它保存输入的信息,直到它重新获得网络连接并可以将其同步到数据库?

感谢您的帮助!

【问题讨论】:

  • 这在很大程度上取决于。当客户端页面打开时,您当然可以将任何数据保留在那里,直到您可以重新打开与服务器的 ajax 对话。但是,一旦用户关闭页面,您的选择就会变得更加有限 - 我能想到的只是一个 cookie,它只有 4096 个字节。也许考虑一个可以保存数据直到主服务器再次访问的备份服务器?
  • 刚刚意识到 - 你开始谈论网络应用程序,但完成了谈论移动应用程序的问题。如果您正在设计一个成熟的 android/iphone/blackberry/etc 应用程序,那么您的客户端数据存储选项显然要好得多:sqlite dbs 等。即使对于 web 应用程序,您也认为您可以使用这样的东西:@ 987654321@(虽然对我来说看起来有点可疑)
  • 抱歉打错了,我不是说移动应用。因此,如果页面保持打开状态并且输入了信息就可以了吗?我想这是我所希望的最好的:)

标签: jquery asp.net web-applications mobile


【解决方案1】:

理想情况下,您希望使用 HTML5 本地存储编写一个 http fifo 队列。在大多数情况下,这太过分了,但在工作中,我们有一个适用于 iOS、WP7、Android 和 Javascript 的本机客户端库,并且都提供持久排队和可靠交付,因此它们必须处理服务器连接因任何原因而中断。

获取/发布 -> 进入内存队列 -> 保存到存储 -> 发送 -> 从存储中删除 -> 引发“已发送”回调。

如果消息发送失败,则将其保留在存储中并在内存中重新排队。

有一个计时器事件,每隔几秒就会启动一次队列(以及在添加/删除消息时启动它)。限制最大同时连接数(每个客户端的 Http 应为 2)。

然后,每次加载 Web 应用时,尝试将本地存储中的所有项目读回内存队列。

那么你就有了持久/可靠的队列并且不会丢失任何消息:)

【讨论】:

  • 哦,对了,这实际上适用于 iOS、WP7 和 Android?因为我认为 WP7 还不支持 HTML5...
  • 每个平台都原生 - 所以 WP7 是 .Net、iOS Objective C 等,而我们的 Webapp 是 Javascript/HTML5 :) 都实现相同的目标并向开发人员公开相同的 API。
猜你喜欢
  • 2023-03-21
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-05-12
相关资源
最近更新 更多