sgcWebSockets ondersteunt de SignalR- en SignalRCore-protocollen; we bekijken nu een voorbeeld van hoe je verbinding maakt met een SignalR-server via een C# -voorbeeld van de CodeProject-website; je vindt het artikel via de volgende link:
Dit artikel laat zien hoe je een eenvoudige server en client maakt met SignalR als protocol; de volledige C#-broncode staat op github
https://github.com/nthdeveloper/SignalRSamples
Hieronder laat ik zien hoe je verbinding maakt met deze SignalR-server met de sgcWebSockets-bibliotheek.
Verbinding opzetten
Om verbinding te maken met een SignalR-server gebruiken we TsgcWebSocketClient als WebSocket-client en TsgcWSAPI_SignalR als SignalR-API. Maak eerst de WebSocket-client en de SignalR-API aan en koppel de SignalR-API aan de WebSocket-client.
WSClient := TsgcWebSocketClient.Create(nil); SignalRAPI := TsgcWSAPI_SignalR.Create(nil); SignalRAPI.Client := WSClient;
Daarna stel je de gegevens van de serververbinding in. In dit geval luistert de server op url: http://localhost:8080. TsgcWebSocketClient heeft een eigenschap URL waarmee we de URL van de WebSocket-server kunnen instellen; aangezien we het WebSocket-protocol gebruiken, wordt onze url: ws://localhost:8080
WSClient.URL := 'ws://localhost:8080';
Tot slot vereist SignalR een Hub-naam; in deze demo is de hub-naam simplehub.
SignalRAPI.SignalR.Hubs.Clear;
SignalRAPI.SignalR.Hubs.Add('simplehub');
Daarna kunnen we WSClient.Active := True aanroepen om een nieuwe verbinding te starten. Als de server actief is, ontvangen we een bericht van de server dat de verbinding succesvol is.
Bericht versturen
Zodra je verbonden bent, kun je een bericht naar de server versturen; we gebruiken hiervoor de methode WriteData van het TsgcWSAPI_SignalR-component. SignalR gebruikt een eigen protocol; in feite is dit een JSON-bericht met enkele argumenten. In dit voorbeeld heet de methode Send en is het argument een tekstbericht. Berichten worden ontvangen in het OnSignalRMessage-event.
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-berichten
Het server-voorbeeld heeft 2 methoden om gebruikers aan een groep toe te voegen of uit een groep te verwijderen. Het berichtformaat lijkt sterk op het Send-bericht; hieronder enkele voorbeelden:
// 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']));
Downloaden
Je kunt het gecompileerde project voor C# en Delphi downloaden via de volgende link:
