2017-09-24 83 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