SignalR Server and Client C#

· Komponenten

sgcWebSockets unterstützt die Protokolle SignalR und SignalRCore. Wir zeigen jetzt ein Beispiel, wie du dich mit einem C#-Beispiel von der CodeProject-Webseite zu einem SignalR-Server verbindest. Den Artikel findest du unter folgendem Link:

https://www.codeproject.com/Articles/5162436/Simple-SignalR-Server-and-Client-Applications-Demo#_articleTop

Dieser Artikel zeigt, wie du einen einfachen Server und Client mit SignalR als Protokoll erstellst. Der vollständige C#-Quellcode liegt auf GitHub

https://github.com/nthdeveloper/SignalRSamples

In den folgenden Zeilen zeige ich dir, wie du dich verbindest zu diesem SignalR-Server mit der sgcWebSockets-Bibliothek.

Verbindung starten

Um dich mit einem SignalR-Server zu verbinden, verwenden wir TsgcWebSocketClient als WebSocket-Client und TsgcWSAPI_SignalR als SignalR-API. Erstelle zuerst den WebSocket-Client und die SignalR-API und hänge die SignalR-API an den WebSocket-Client.

WSClient := TsgcWebSocketClient.Create(nil);
SignalRAPI := TsgcWSAPI_SignalR.Create(nil);
SignalRAPI.Client := WSClient; 

Dann musst du die Server-Verbindungsdaten setzen. In diesem Fall lauscht der Server auf der URL: http://localhost:8080. TsgcWebSocketClient hat eine Eigenschaft URL, mit der wir die URL des WebSocket-Servers setzen können. Da wir das WebSocket-Protokoll nutzen, lautet unsere URL: ws://localhost:8080 

WSClient.URL := 'ws://localhost:8080'; 

 Zuletzt benötigt SignalR einen Hub-Namen. In diesem Demo lautet der Hub-Name simplehub.

  SignalRAPI.SignalR.Hubs.Clear;
  SignalRAPI.SignalR.Hubs.Add('simplehub'); 

Anschließend können wir WSClient.Active := True aufrufen, um eine neue Verbindung zu starten. Ist der Server aktiv, erhalten wir eine Nachricht vom Server, die eine erfolgreiche Verbindung bestätigt.

Nachricht senden 

 Sobald du verbunden bist, können wir eine Nachricht an den Server senden. Wir verwenden die Methode WriteData der Komponente TsgcWSAPI_SignalR. SignalR nutzt ein proprietäres Protokoll, im Grunde eine JSON-Nachricht mit einigen Argumenten. In diesem Beispiel heißt die Methode Send und das Argument ist eine Textnachricht. Nachrichten werden im Ereignis OnSignalRMessage empfangen.

SignalRAPI.WriteData(Format('{"H":"simplehub","M":"Send","A":["%s"],"I":1}', [txtMessage.Text]));
procedure OnSignalRSignalRMessage(Sender: TObject; MessageId, aData: string);
begin
  DoLog('[' + MessageId + '] ' + aData);
end; 

Join- / Leave-Nachrichten 

 Das Server-Beispiel hat 2 Methoden, um Benutzer einer Gruppe beizutreten oder zu verlassen. Das Nachrichtenformat ähnelt stark der Send-Nachricht. Schauen wir uns einige Beispiele an:

// join myGroup
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"JoinGroup","A":["%s"],"I":2}', ['myGroup']));
// leave myGroup
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"LeaveGroup","A":["%s"],"I":3}', ['myGroup'])); 

Download

Du kannst das kompilierte Projekt für C# und Delphi unter folgendem Link herunterladen: