我正在尝试将 Google Docs 具有的实时协作功能添加到 HTML 中的可编辑文本区域。例如,这将允许 2 或 3 个用户可以协作编辑同一个文本区域。如何解决这个问题,或者是否有可以使用的 JavaScript 库? (我使用 PHP、mySQL 和 JavaScript/AJAX/jQuery)。
最佳答案
为了促进多个 Web 客户端之间的实时更新,您需要使用一种技术,通过使用 Comet 或 Websockets 解决方案来利用 Web 的请求/响应周期。
要使文本区域保持更新,您需要从所有 3 个客户端建立到服务器的长期 HTTP 连接或 Websocket 连接。每个文本区域都需要一个 keyup 或 keypress 处理程序,当调用该处理程序时,将字符通过流发送到服务器。当您的服务器检索此数据时,它需要向其他 2 个连接的客户端返回响应。
然后需要通过使用最新数据更新文本区域的值属性来处理响应。
我看到您正在使用 PHP,我知道它支持 comet。您需要设置 comet(或 Websockets)才能实现此类解决方案。
话虽如此,一个更基本的替代方法是使用轮询来达到预期的效果。这将涉及所有 3 个客户端定期向服务器发出请求以检索更新。可以想象,轮询速度越快,应用程序的实时性就越高。但是,轮询速度越快,您的应用程序就会消耗更多的带宽和资源。
对于 3 个客户端,这可能是可行的,但对于任何涉及大量使用的严肃应用程序,您肯定希望研究 Websockets 或 Comet。
要回答您关于 JavaScript 库的问题,请查看 Dojo Cometd用于客户端 Comet 解决方案的库。
关于php - 如何实现实时表单编辑,如 Google Docs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490799/