我想做一些非常类似于Google Doc的实时更新的内容 - 所有用户都可以“立即”查看文档中其他用户的操作。
为实现这一目标,我的想法到目前为止:
我想知道其他人尝试达到这种效果的经验。这样做的最佳方式是什么?
感谢所有帮助。
注意:我并不是专门寻找实时文档编辑解决方案。我正在寻找一个解决谷歌与他们的文档相同的概念的解决方案。我实际上会以稍微不同的方式使用该解决方案。
答案 0 :(得分:12)
我投票支持Long-poll策略:每个客户端都会向服务器打开一个请求,但服务器永远不会断开连接,只是不时地发送一些java脚本。
常量AJAX请求会终止您的服务器。
答案 1 :(得分:8)
结帐google mobwrite。它是一个插入式库,可通过operational transformation协作编辑html表单。
从服务器推送事件很容易,有many ways to do it。确保所有客户的国家一致,这是困难的部分。这就是运算转换算法的用武之地。
答案 2 :(得分:3)
Ajax方法是一种方法。您可以像聊天应用程序一样实现它。实际的方式取决于正在查看的数据。简而言之
是否会影响性能将在很大程度上取决于如何构建所有内容。
您的其他选项是网络套接字。没有亲自使用它,但如果您可以控制用户将使用哪种浏览器,您可以试一试。它允许服务器将数据推送到浏览器。 一些链接: Web Sockets JS和 Web Sockets in Firefox
答案 3 :(得分:3)
另一种选择是Orbited:
Orbited提供纯粹的 浏览器中的JavaScript / HTML套接字。 它是一个Web路由器和防火墙 允许您集成Web 具有任意后端的应用程序 系统。您可以实施任何网络 浏览器中的协议 - 没有 借助插件。
Orbited是一个HTTP守护进程 针对持久的彗星进行了优化 连接。它被设计成 很容易与新的和 现有的申请。轨道允许 你写实时网络 应用程序,如聊天室或 即时通讯客户端,没有 使用任何外部插件,如Flash 或Java。
答案 4 :(得分:3)
如果您的用户仅使用现代浏览器,那么我将尝试使用HTML 5附带的websocket标准。 越来越多的浏览器将来会支持它,Google和Apple等公司正在努力解决这个问题。 这是一个入门教程: http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/
答案 5 :(得分:2)
如果您不想使用Web套接字,因为它们不受广泛支持,您需要查找Comet。这就是Google Docs可能会这样做的。
答案 6 :(得分:2)
答案 7 :(得分:1)
限制ajax请求数量的一种方法是通过间隔它们来变得聪明。您不需要每秒发出一次请求。当您获得活动响应时,请在1秒内执行另一个请求。如果没有活动,那么2秒,然后是4等,请求之间最多可能有30秒。更新发生时,重置计时器。基本上,以智能方式隔离您的请求,使GUI 看起来尽可能响应。
答案 8 :(得分:1)
我建议使用像Atmosphere这样的Comet框架。它会自动为你的消息选择一个传输机制,如果你很幸运的话可以是websockets(但是因为这是抽象的,你不必担心)。无论如何,如果您不必处理个别请求/响应以及您将遇到的所有错误源和浏览器错误,那么它是非常有价值的。我去过那儿。有龙。 : - )
答案 9 :(得分:1)
另请查看pubsubhubbub - http://code.google.com/p/pubsubhubbub/ 观看视频,了解简短介绍。
答案 10 :(得分:0)