問題タブ [collaborative-editing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 一般的なリアルタイムコラボレーションエディター/プラグインの実装(Google Docsなど)
事前に作成されたもの( etherpadなど)の一部には専用のエディターの機能がないため、リアルタイムのコラボレーションエディターの実装を検討しています。
現在CKEditorを使用していますが、 AlohaEditorへの切り替えを検討しています。
複数の人がソフトウェアを使用するので、すべてが可能な限りリアルタイムになるように、プッシュ通知/アプリ周辺の場所への更新にPusherを使用します。
さて、最初は、コラボレーションエディタを実装する方法についての私の思考プロセスは本当に遅いようです-プッシャーを使用してテキストフィールド全体を絶えず交換する...しかし、テキストの巨大なブロックを移動すると、ひどく醜い速度になります、そして私は本当にわかりません複数(> 5)の人が同時にテキストで作業している場合の対処方法..したがって...共同編集を行うには、より簡単でネットワーク効率の高い方法が必要です。
アイデア?
c# - 共同テキストエディタ
私は本当に厄介な問題を抱えています.C#で共同テキストエディターに取り組んでいます.リストのすべてのクライアントが共有テキストボックスを編集したいのですが、キーボード変換の文字で行き詰っています. keyDown イベントのコードは次のとおりです。
これで、アプリケーションに接続されたクライアントのリストからのすべてのクライアントは、textBox の入力を含むバイト配列を受け取る必要があります。そのため、すべてのクライアントの "OnDataReceived" コールバックで、このバイト配列を文字列に変換し、crossThreadDelegate を介してテキスト ボックスを更新しようとします。すべてのクライアント。
次に、crossThread デリゲートの定義:
しかし、私の本当の問題は次のとおりです。バイト配列を送信したため、エスケープ文字をうまく識別できません。それを文字列に変換してから、すべてのクライアントのテキストボックスをその文字列で更新しようとします。たとえば、Shift キーを押すと、クライアントのすべての TextBox の文字列は「shiftKey」になります。これらのエスケープ文字の処理方法を教えてください。ASCII で送信および更新する方法はありますか。
real-time - リアルタイムのコラボレーションに運用の変革が必要なのはなぜですか?
Google Docs のようなアプリや、ShareJSやEtherPad Liteのようなライブラリを見てきて、私はリアルタイムのコラボレーションに非常に興奮しています。これは、Operational Transformation として知られる非常に複雑な手法を使用して実装されているようです。
私の質問はおそらくやや奇妙です: なぜ OT が必要なのですか?
つまり、ほとんどの設定で Web のレイテンシが非常に低いということです。Google Docs、ShareJS、EtherPad などのツールを使用すると、変更は接続されたクライアントにほぼ瞬時に反映されます。
競合を解決し、サーバー側で同期を維持するための非常に複雑なソリューションはなぜですか?
コマンドパターンと元に戻す/やり直しに精通しているので、ドキュメントへのすべての変更を、同等の元に戻すコマンドを使用したコマンドとして単純に実装することが、はるかに簡単な解決策のように思えます。
クライアントが変更を加えたときにシリアル化されたコマンドを送信できるようにします。受信したすべてのコマンドにサーバー側でシリアル番号を割り当てます。ドキュメントに適用されたすべてのコマンドをクライアントに配布し、コマンドの履歴も保持します。
接続された各クライアントは、ドキュメントに適用されたすべてのコマンドをサーバーから受信します。これには、「正しい」順序、たとえばコマンドがサーバーによって受信され、マスター ドキュメントに適用された順序を示すシリアル番号が付けられます。サーバーによって保持されます。
クライアントがコマンド番号 100 であった場合、番号 102 として返される新しいコマンドをサーバーに送信すると、クライアントはコマンドを見逃したことを認識します。次に、送信した最後のコマンドに対して「元に戻す」コマンドを適用するだけです。コマンド番号 101 を適用し、それ自体のコマンド番号 102 を再度適用して、順序を元に戻します。
いくつかのコマンドが遅れている場合は、必要なだけロールバックしてから、見逃したすべてのコマンドを適用するなどします。
それは私にはずっと簡単に聞こえます。
それよりも運用の変革が優れている点は何ですか?
ajax - Django & Google-mobwrite - フォーム ID
Djangoアプリケーションで共同フォームを作成しようとして、 google-mobwriteコードを使用しています...
私が使う:
そして、問題なく動作します。私のアプリケーションでは、次のモデルがあります。
このモデルから、未知の数の動的なオブジェクトがあるとします。
問題は、属性のフォームによってテンプレートで生成された IDfieldA
が常に同じであることです。
ウェブサイトでニール・フレイザーは次のように述べています。
MobWrite には認証がないことに注意してください。それがホスト アプリケーションの仕事です。MobWrite は、ホスト アプリケーションがフォームを相互に接続するために使用する単なる共有パイプです。不要なユーザーを締め出し、衝突を防ぐために、8 文字のランダムな文字列であるフォーム要素 ID を使用することをお勧めします。フォームのすべてのユーザーが (デモのように) グローバルに接続される場合は、ランダム ID をハードコーディングするだけで済みます。ユーザーをグループに分割し、グループのメンバー間でのみデータを同期する場合は、グループのメンバーがすべて同じ ID を持つように ID を生成する必要があります。
fieldA
オブジェクトのメンバーまたは別のオブジェクトのメンバーによって予測できない、オブジェクトごとに異なるID が必要です。しかし、フィールドのIDは、同じオブジェクトのすべてのメンバーで同じでなければなりません...それを達成するために何をすべきかわかりません..
javascript - すべてのクライアントからサーバーへのアクティブな要素の送信
共同テキストエディタがあるとしましょう。
共同研究者 A が段落 A に書いている。
共同作業者 B が段落 B に書き込みます。
共同研究者 C がパラグラフ C に書き込みます。
A、B、C のアクティブな要素 (要素にフォーカス) をサーバーに送信し、それをすべてのクライアントに送信したいと考えています。
助けが必要。
share - セルフホストでのcloud9-ideコラボレーションは可能ですか?
https://github.com/ajaxorg/cloud9から構築された自己ホスト環境でコラボレーションおよびワークスペース共有機能を使用することは可能ですか?
javascript - 廃止された TogetherJS の代替
TogetherJSに代わる良い方法はありますか? そのGitHubは何ヶ月も活動を行っておらず、この投稿では、現在停止しており、将来が不確実であると述べています.
ShareJS と言えば、TogetherJS の最もユニークな機能は、トラブルシューティング/リモート アシスタンスで使用するために別の人のカーソルを表示する機能です。
javascript - 「ライブ編集」マルチユーザー プラットフォームのリスト (Web サイト プロジェクト用)
(Google での調査後) HTML、CSS、JavaScript、Php ドキュメントでの共同 (おそらく LIVE) コーディングのオプションを知りたいです。
私は Github を初めて使用します。私の理解では、ドキュメントのライブ編集は許可されていません。つまり、複数の人がドキュメントで同時に作業を行い、矛盾が生じる可能性があります。
これは正しいです?
どうもありがとう。