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:
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:
