2016-11-09 2 views
0

Angenommen, ich habe eine .Net Web-Anwendung, die Benutzer anmelden können.Simultane Bearbeitung von Textarea von mehreren Clients in C# .net

Angenommen, ich habe eine Ansicht, die einfach ein Textfeld ist und ich möchte, dass alle angemeldeten Benutzer gleichzeitig in ein dynamisch aktualisierendes Textfeld schreiben können.

Ich werde eine wilde Vermutung machen und sagen, dass es wahrscheinlich eine Bibliothek für so etwas gibt, und wäre einfacher als der Versuch, es mit nativem C#/.net zu tun.

Ich habe bereits die SignalR-Bibliothek, die für andere Sachen (Chat) benötigt wurde, also wenn das überhaupt hilft, das ist genial. Auch alle tatsächlichen Tutorials zu diesem Thema würden sehr geschätzt werden.

Vielen Dank.

+0

Sie suchen nach https://en.wikipedia.org/wiki/Operational_transformation. – SLaks

+0

_und was ist OT? _ Oh ok. Ich werde diesen Wiki-Artikel ausprobieren. –

+0

Ein contenteditable div-Element könnte eine einfachere Möglichkeit sein, dies zu tun –

Antwort

2

SignalR ermöglicht eine Zwei-Wege-Client-Server-Kommunikation. Es bedeutet, dass Ihr Client-Sever-Methode aufrufen kann, sagen void UpdateTextArea (DiffInfo diff) Aber auch der Server eine Methode für Ihre Kunden (ein oder im Raum) nennen kann, sagen onTextAreaUpdated (diff) So können Sie zwischen den Clients kommunizieren.

Aber SignalR ist nicht über das Zusammenführen. Also liegt es an dir. Zum Beispiel können Sie google-diff-match-patch verwenden und Änderungen beim Hochfahren/Herunterfahren des Schlüssels sammeln.

Dann können Sie diese Informationen an den Server und Breadcast an die restlichen Clients senden. Und wenden Sie dieses Ereignis auf die übrigen Clients an.

Und über Zusammenführungskonflikte. Sie müssen selbst über Konflikte nachdenken. Und tun Sie es definitiv auf der Serverseite.

+0

Ich habe auf googles diff Match-Patch Zeug gelesen, und es scheint ziemlich nah an dem zu sein, was ich will, zumindest als Sprungbrett. Das ist wahrscheinlich die Art, wie ich gehen werde. –

Verwandte Themen