2017-09-24 9 views
1

Google Docsとよく似たWebサイト用の共同編集者ですが、コーディングと開発のために作られています。複数のユーザーが同時にファイルを編集し、その変更をサーバーとそのファイルを表示している他のユーザーの両方にプッシュすることを許可します。どうすればこのことができますか?AJAX/PHPで複数の人が同時にファイルを共同編集していますか?

ユーザー間でデータを同期させる方法を理解できません。次のように私が今持っているコードがある:JSで
AJAX:

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

私の現在のコードでは、ユーザーの1人が入力中に頻繁にファイルを更新していますが、開いている複数のクライアントを介してこのデータを取得して同期させることはできません。私が持っているコードのいくつかを投稿します。 – Drew

+0

リアルタイムアップデートでは、他の人が編集した可能性のあるものを更新するためにjavascriptで 'setTtimeout'を呼び出す必要があります。 –

答えて

1

あなたはデータをストリーミングするために、ブラウザまたはWebSocketにサーバーからデータをストリームするEventSourceを使用することができますサーバーとサーバーの両方に適用されます。すなわち、各クライアントは、ファイルのストリームを連続的に受信する(例えば、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