5

我有一个社交网络应用程序的想法,其中一部分想法是将数据从本地存储中提取到服务器数据库中。这样做的原因是说你有一个想法,你想把它放在这个社交应用程序的下一个状态,但是你在任何地方都没有信号和无线。您在应用程序上写下状态,并将其保存到本地存储中,以供他们回到可以在线连接手机的地方使用。

然后他们到达一个可以上网的地方,应用程序检测到本地存储发生变化,然后从那里提取并保存到服务器数据库。

这完全有可能吗,如果可以,您将如何实施?如果这根本不可能,你认为这可能是未来的某个时候吗?

我期待听到您对此的评论和回答,因为我认为这可能是一个相当大的讨论。

4

2 回答 2

3

是的,这是可能的,为什么不呢?当您从本地存储中提取数据时,数据就像任何其他 Javascript 变量一样工作,除了缺少 Internet 连接之外,没有任何限制可以阻止您将其发送到服务器。

你将如何实施它?

首先,您需要检测连接状态,请参阅此问题。因此,当用户尝试更新其状态时,它会检查连接是否在线,如果不在线,则将其保存到本地存储中。

使用链接问题中的方法来检测连接何时恢复,然后从本地存储中提取数据并通过将其发送到服务器,然后清除本地存储以防止发送重复数据。

于 2013-07-12T10:21:43.437 回答
3

您可以定期检查navigator.onLine您的 Javascript 以获取设备的在线状态。请注意,虽然

  navigator.onLine == false 

安全地告诉你一个设备离线,

 navigator.onLine == true 

并不一定意味着它可以访问互联网并且可以执行请求,只是它连接到某种网络。

一旦您假设设备未离线,您将发送一个 ajax 请求(我建议使用 jQuery 的 $.ajax 函数),您可以在其中发布来自 localStorage 的数据

(localStorage.getItem('dataToPull'))

到一个 PHP 脚本,然后将其插入到您的 MySQL 数据库中。

如果该 ajax 请求失败,并且您确定它没有收到 PHP/MySQL 错误,则可以安全地假设,尽管设备已连接到网络并且 navigator.onLine 为 true,但没有 Internet 连接。然后您可以进行一些错误处理,例如在 5 分钟内再次轮询设备。

于 2013-07-12T10:24:10.927 回答