异步客户端 javascript 进程与服务器对话

发布于 2024-11-04 17:21:03 字数 360 浏览 0 评论 0原文

我正在考虑开发一个具有离线功能的网络应用程序。我正在考虑将所有客户端表单回发格式化为 JSON 对象,并在表单回发上将它们直接写入 HTML5 LocalStorage。然后,我将有一个单独的进程,异步轮询 LocalStorage 中的 JSON 条目并将它们提交到服务器。此服务器同步进程不会有任何 UI 上下文。实际的用户界面可以非常灵敏。 (我将使用缓存清单文件来处理其他离线问题)。

这是一个合理的计划吗?异步 JSON 后处理的最佳技术实现是什么? (也许是一个计时器,每秒轮询 LocalStorage 并检查服务器连接?)是否有更好的方法来实现服务器同步(如果我在服务器上实现这个,我会编写一个服务 - 是否有等效的 JavaScript 机制? )

谢谢。

I'm considering developing a web app with offline capability. I'm considering formatting all client form postbacks as JSON objects, and writing these direct to HTML5 LocalStorage on a form postback. I'll then have a separate process that asynchronously polls the LocalStorage for JSON entries and submits these to the server. This server-sync process will not have any UI context. The actual user UI can then be very responsive. (I'll use cache manifest files to deal with other offline issues).

Is this a sound plan, and what would be the best technical implementation of the asynchronous JSON post process? (perhaps a timer, polling LocalStorage and checking the server connection every second?) Is there a better way to implement the server sync (if I was implementing this on a server, I'd write a service - is there an equivalent javascript mechanism?)

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

狼亦尘 2024-11-11 17:21:03

去年我做了一些测试来离线运行我们的应用程序,仅适用于 HTML5 浏览器。

该应用程序基于 JSON 服务,并使用我们的库呈现客户端:pure.js。即使没有离线访问,您只需使用类似的架构即可获得响应速度非常快的应用程序。

如果 JSON 服务调用失败,则假定我们处于离线状态,并使用本地存储。
在线完成调用时,它会检查离线队列的状态,并在需要时进行同步。

但后来我开始在客户端复制一些服务器验证逻辑。发现存储的数据没有加密。即使使用像 javascrypt 这样的东西,你也需要在某个地方使用密钥或设置密码密钥等...
那么你要给客户保留什么?一切?最后查看的项目?如何处理数据更改冲突?

我敢打赌,今天的移动网络通常都是在线的,让应用程序在移动设备上良好运行比尝试使其离线更容易。
我们暂时放弃了离线工作。

I did some testing last year to run our app offline, for HTML5 browsers only.

The app is based on JSON services, and rendered client side using our lib: pure.js. You get a very responsive app just using a similar architecture, even without offline access.

If the JSON service call failed, it assumed we were offline, and used local storage instead.
When a call was done online, it checked the status of the offline queue and sync it if needed.

But then I started to replicate some server validation logic on the client. And discovered the data stored were not encrypted. Even with something like javascrypt you need the key somewhere or set a password key, etc...
Then what do you keep to the client? Everything? The last viewed items? How to you handle data change collisions?

My bet is with today's mobile networks, which are online in general, it is easier to make the app runs well on a mobile instead of trying to get it offline.
We dropped our offline efforts for now.

倦话 2024-11-11 17:21:03

最后我只使用了一个简单的 setInterval,如下所示:

setInterval("SyncLocalStorageToServer()", 4000); // Loop at 4 second intervals

然后它调用一个循环 localStorage 条目的函数,将每个条目依次发送到服务器。

In the end I just used a simple setInterval, as follows:

setInterval("SyncLocalStorageToServer()", 4000); // Loop at 4 second intervals

which then calls a function that loops around the localStorage entries, sending each one in turn to the server.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文