网络上的实时协作使用界面

时间:2009-11-10 18:10:52

标签: javascript ruby-on-rails real-time collaboration

我想知道Web界面中实时协作背后的技术和最佳实践是什么。

这方面的一个例子当然是Google Wave。另一个是PivotalTracker.com。

我对人们在这里使用 Ruby on Rails 所做的任何工作(框架,插件等)特别感兴趣。

我想它必须在某种程度上使用Javascript,但你需要一种方法来抽象出来。可能会定期轮询服务器以查看是否已进行更改,如果在编辑内容时服务器返回并说其他人已更新,则还可以解决冲突。

谢谢!

1 个答案:

答案 0 :(得分:2)

Wave有operational transform,具有易于组合的良好属性。您有两个用户,每个用户在用户界面中都有“某些东西”,两个“东西”可以组合成最终文档。这使您可以跳过解决冲突的问题。

启用对应用状态的实时更新的好方法是使用Comet,这本质上是一个令人讨厌的代号,用于保持对服务器的活动,长期,未终止的get / post请求,服务器完成并响应服务器上发生的事情。它允许在不让客户端定期轮询的情况下向客户端发送即时更新。

我无法真正说出如何在javascript / r'n'r中抽象出来,许多底层技术细节都很难以及特定应用,没有框架支持它们开箱即用。