3

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

4

1 回答 1

10

为了促进多个 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 解决方案。

于 2012-05-08T00:16:01.023 回答