2017-09-24 89 views
1

我正在为网站制作一个协作编辑器,非常类似Google Docs,但它是为编码和开发而构建的。我希望允许多个用户同时编辑文件,并将其更改推送到服务器和查看文件的其他人。我怎么能这样做?多人同时使用AJAX/PHP协作编辑文件?

我不知道如何同步用户之间的数据。我现在所拥有的代码如下:
AJAX在JS:

function update(f, txt){ 
    $.ajax({ 
    type: 'POST', 
    data: {text: txt, file: f}, 
    url: "save.php", 
    }); 
} 

save.php:

$file = $_POST['file']; 
$contents = $_POST['text']; 
file_put_contents(dirname(__FILE__) . "/preview" . "/" . $file,$contents); 
+0

您尝试过哪些代码来解决查询? – guest271314

+0

我目前的代码是,它在每次用户打字的时候经常更新文件,但我没有办法通过多个客户端来抓取并同步数据,这就是为什么我在这里。我会发布我的一些代码 – Drew

+0

实时更新将需要您在javascript中调用'setTtimeout'来更新其他人可能已编辑的内容。 –

回答

1

您可以使用EventSource从服务器的数据流,以浏览器或WebSocket将数据流无论是服务器还是服务器。也就是说,每个客户端都会连续收到文件流,例如参见How to read and echo file size of uploaded file being written at server in real time without blocking at both server and client?

plnkr提供了一个实时共享选项,并且是开源的。考虑查找并阅读该应用程序的代码,并调整您尝试实现的内容。

+0

@Drew'WebRTC'或浏览器扩展也是您可以尝试的选项,请参阅[通过HTTP将数据从浏览器传输到服务器的方法](https://stackoverflow.com/q/35899536/) – guest271314

+0

我想远离浏览器扩展,它为用户创建了一个额外的步骤来使用服务 – Drew

+0

@Drew如果应用程序是“为编码和开发构建的”,浏览器扩展的“额外步骤”不应该成为问题客户端。有几个可以满足需求的选项,包括命令行中的'git'或者使用[GitHub](https://github.com);或在服务器上使用'http/2'。你对当前的代码有什么问题? – guest271314