SignalR Server and Client C#

· Composants

sgcWebSockets prend en charge les protocoles SignalR et SignalRCore, voyons maintenant un exemple de la façon de se connecter à un serveur SignalR utilisant un c# sample depuis page CodeProject, tu peux accéder à l'article via le lien suivant:

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

Cet article montre comment créer un serveur et un client simples en utilisant SignalR comme protocole, le code source C# complet est hébergé sur GitHub

https://github.com/nthdeveloper/SignalRSamples

In les lignes suivantes, I va show how connect vers ce SignalR server utilisant sgcWebSockets library.

Démarrer la connexion

Pour se connecter à un SignalR server, nous allons utiliser TsgcWebSocketClient as client WebSocket and TsgcWSAPI_SignalR as SignalR API. Crée d'abord le client WebSocket et l'API SignalR et attache l'API SignalR au client WebSocket.

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

Ensuite, tu dois définir les données de connexion du serveur. Dans ce cas, le serveur écoute sur l'URL: http://localhost:8080. TsgcWebSocketClient a une propriété appelée URL où nous pouvons set URL of serveur WebSocket, comme nous allons utiliser le protocole WebSocket notre URL sera : ws://localhost:8080 

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

 Enfin, SignalR nécessite un nom de Hub, dans cette démo, le nom du hub est simplehub.

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

Ensuite, nous pouvons appeler WSClient.Active := True pour démarrer une nouvelle connexion. Si le serveur est actif, nous allons recevoir un message du serveur informant d'une connexion réussie.

Envoyer un message 

 Une fois connecté, nous pouvons envoyer un message à server, nous allons utiliser WriteDatune méthode from TsgcWSAPI_SignalR component. SignalR utilise a propietary protocol, basically est un JSON message avec certains arguments. Dans cet exemple, méthode est appelé Send and l'argument est le message texte. Les messages sont reçus 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 messages 

 Server sample a 2 méthodes to join et leave utilisateurs depuis un groupe. Le format du message est très similaire à Send message, voyons certains examples:

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

Tu peux download compiled project for C# et Delphi utilisant le suivant link: