【问题标题】:What is the best practice to keep JSON data up to date on a web page?使网页上的 JSON 数据保持最新的最佳做法是什么?
【发布时间】:2012-07-18 18:31:39
【问题描述】:

我正在开发一个处理来自 SQL 服务器的数据的 Intranet 应用程序。该应用程序必须支持多个用户使用相同的数据源/相同的表。该应用程序使用由 Ajax 调用提供的 jQuery datatable library 到我的 MVC 控制器中的 JSON 结果操作以及在表中呈现的一些 Ajax 链接允许以模式弹出窗口的形式进行 CRUD 操作。当弹窗提交 CRUD 操作时,它会关闭并在数据表上调用刷新。

一切都很好,但是,如果另一个用户(或另一个浏览器/选项卡)更改了数据而没有刷新表,我希望该数据表能够更新。

一种方法是每 X 毫秒从服务器轮询一次 Hash 并在哈希发生变化时更新,但我不太喜欢这个选项,因为我觉得它可能很快就会因为要管理的表数量而失控。

我想知道你们对轮询方法的看法,以及由于 X 原因,你们是否有更流畅、更清洁或只是更好的做法的替代方法。

非常感谢!

【问题讨论】:

  • 也许SignalR 可以帮助你。每次向应用程序发送命令时,您都可以将结果推送到每个连接的客户端。
  • 您应该将其发布为答案! ^^ 谢谢!这正是我所需要的。
  • @Darin Dimitrov 首先发布了答案。让他得到它的(不再需要的)积分:)
  • 问题仍处于“不接受答案”的冷却时间^^

标签: jquery ajax asp.net-mvc json


【解决方案1】:

我想知道你们对投票方法的看法,如果 您有一个更流畅、更清洁或简单的替代方案 出于 X 原因的更好实践。

轮询的替代方法是推送,它的效率要高得多。结帐SignalR。这是introductory blog post

【讨论】:

  • 在阅读了您的 100 多篇帖子后,是我寻求帮助的时候了。 :D 谢谢!这应该会产生奇迹。
【解决方案2】:

您是否考虑过使用http://socket.io/ 创建一个websocket?

这将允许服务器在您的表更新时将数据推送到相关客户端,并且还允许用户将他们的更改推送到您的服务器而无需刷新(就像 ajax 一样)。

Socket.io 也有一个很好的回退机制,所以它支持所有主流浏览器(甚至是 IE6)。 http://socket.io/#browser-support

【讨论】:

  • 在IE 8下我不需要支持任何东西,但我会看看它。然而,Darin 建议的 SignalR 似乎更精致,更容易插入。不过我还是会看看它!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
相关资源
最近更新 更多