php - 如何实现实时表单编辑,如 Google Docs

标签 php javascript mysql ajax jquery

我正在尝试将 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/

相关文章:

javascript - jQuery 无法使用 .parent() 获取父元素

php - 在 $_POST 变量中使用 $row 变量进行 MYSQL 查询

php - 计数不返回 SQL 中的总计数值

php - 无法在多维数组中声明新数组

php - 使用加密检查数据库

javascript - Angular 代码未在浏览器中显示结果

mysql - 了解使用用户变量的查询行为

php - magento - 静态 block 中的类别名称和图像?

php - Zend_Registry 不工作!设置和获取

javascript - 如何在不影响页面布局的情况下使用 jQuery 扩展框大小