如何实施实时表单编辑,就像Google Docs一样

时间:2012-05-08 00:05:39

标签: php javascript mysql ajax jquery

我正在尝试将Google Docs所具有的功能(即实时协作)添加到HTML中的可编辑文本区域。例如,这将允许2或3个用户可以协作编辑相同的textarea。如何处理这个问题,或者是否有可以使用的JavaScript库? (我使用PHP,mySQL和JavaScript / AJAX / jQuery)。

1 个答案:

答案 0 :(得分:9)

为了促进多个Web客户端之间的实时更新,您需要使用一种技术,该技术可以通过使用Comet或Websockets解决方案来利用Web的请求/响应周期。

要保持textarea的更新,您需要从所有3个客户端建立与服务器的长期HTTP连接或Websocket连接。每个textarea都需要一个keyup或keypress处理程序,在调用时,它将流中的字符发送到服务器。当您的服务器检索此数据时,它将需要将响应返回给其他2个连接的客户端。

然后需要通过使用最新数据更新textarea的value属性来处理响应。

我看到你正在使用PHP,我知道它支持彗星。您需要设置comet(或Websockets)才能实现这样的解决方案。

话虽如此,一个更基本的选择是使用轮询来达到预期的效果。这将涉及所有3个客户端定期向服务器发出请求以检索更新。可以想象,轮询率越快,应用程序的实际时间就越多。但是,轮询速率越快,您的应用程序将消耗更多带宽和资源。

对于3个客户端,这可能是可行的,但对于任何涉及大量使用的严重应用程序,您肯定希望查看Websockets或Comet。

要回答您的JavaScript库问题,请在客户端查看Dojo Cometd库中的Comet解决方案。