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

最佳答案

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

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

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

我看到您正在使用PHP,但我确实知道它支持Comet。您需要设置Comet(或Websockets)才能实现这种解决方案。

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

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

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

关于php - 如何实现实时表单编辑,例如Google文档,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10490799/

10-09 23:51