2011-02-28 81 views
0

阅读完这个post(可能通过查看图像可以得到要点,不需要阅读全文),我很难决定需要哪个点在comet型技术的帮助下。 它看起来(天真)我可以通过使用Ajax请求和数据库检索几个版本来完成所有这些。真的吗?。实时操作转换和协作

也许我错过了一些东西,所以澄清会很好。

UPDATE: 鉴于安德鲁写的有用的答案,他说,一个Ajax方法这个问题是不及时,我不知道为什么,就是,在该阶段由服务器发送到客户端的响应会产生一个延迟?

回答

1

Comet IS Ajax请求。

为了让服务器能够将通知推送到用户浏览器(IE随时可以看到服务器在图表中发送更改),用户需要已经与服务器建立连接。使用ajax长轮询等来维持该连接的方法是彗星术语所指的。

是的,您可以通过每x秒发送一次Ajax请求来实现此目的。但这很浪费,而且不及时。

[编辑]

当我说这是不及时的,我说那是什么,使用一个AJAX调用上的间隔更新将有什么那间隔的延迟。 服务器无法向客户端发送更新。它只能回答来自客户的请求。所以如果服务器获得新的信息,它必须坐在它上面,直到所有客户端回来并要求更新。在这种情况下,人们可以编辑相同的信息并同时提交,这需要由服务器处理,而这正是本文要解决的问题。使用彗星框架只会减少发生这种情况的可能性,因为不同的客户端会更好地同步。

+0

@Andrew:谢谢你的回答。我曾考虑过使用Ajax Push服务(APE或pusherapp)。这改变了这种方式的实施方式?显然,我不想每隔x秒发送一次ajax请求,相反,这些请求应该在用户触发特定操作时开始。 – 2011-02-28 18:52:57

+0

不,APE或任何其他彗星实现将执行的操作是在用户加载页面(或文档案例中的文档)时与服务器建立连接,然后就坐在那里。当用户在本地进行更改时,可以使用ajax将其发送到服务器,当远程用户进行更改时,服务器将完成坐在那里的请求并且将更新本地用户。这篇文章根本不是在谈论这个问题,它只是解释如何在异步修改的情况下保持文档的状态,它期望读者能够实现通信。 – Andrew 2011-02-28 20:22:33

+0

@ Andrew:对。我知道这篇文章没有提到这一点,但我想知道APE(例如)是否可以用来帮助实施。 – 2011-02-28 23:08:40