ASP.NET Core SignalR est une bibliothèque open source qui simplifie l'ajout de fonctionnalités web en temps réel aux applications. Les fonctionnalités web en temps réel permettent au code côté serveur de pousser instantanément du contenu vers les clients.
Bons candidats pour SignalR :
- Applications nécessitant des mises à jour à haute fréquence depuis le serveur. Par exemple : jeux, réseaux sociaux, votes, enchères, cartes et applications GPS.
- Tableaux de bord et applications de monitoring. Par exemple : tableaux de bord d'entreprise, mises à jour de ventes instantanées ou alertes voyage.
- Applications collaboratives. Les applications de tableau blanc et les logiciels de réunion d'équipe en sont des exemples.
- Applications nécessitant des notifications. Réseaux sociaux, e-mail, chat, jeux, alertes voyage et bien d'autres applications utilisent les notifications.
Le composant SignalR Core de sgcWebSockets utilise WebSocket comme transport pour se connecter à un serveur SignalR Core ; si ce transport n'est pas pris en charge, une erreur est levée.
Exemples de code Delphi
SignalRCore.Invoke('SendMessage', ['John', 'Hello All.'], 'id-000001');
procedure OnSignalRCoreCompletion(Sender: TObject; Completion: TSignalRCore_Completion);
begin
if Completion.Error <> '' then
ShowMessage('Something goes wrong.')
else
ShowMessage('Invocation Successful!');
end;
Invocations : l'appelant envoie un message à l'appelé et attend en retour un message indiquant que l'invocation est terminée, et éventuellement un résultat de l'invocation.
Exemple : le client invoque la méthode SendMessage et passe en paramètres le nom d'utilisateur et un message texte. Envoie un Invocation Id pour obtenir un message de résultat depuis le serveur.
SignalRCore.Invoke('SendMessage', ['John', 'Hello All.']);
Invocations non bloquantes : l'appelant envoie un message à l'appelé et n'attend aucun message supplémentaire pour cette invocation. Les invocations peuvent être envoyées sans valeur d'Invocation ID. Cela indique que l'invocation est « non bloquante ».
Exemple : le client invoque la méthode SendMessage et passe en paramètres le nom d'utilisateur et un message texte. Le client n'attend aucune réponse du serveur concernant le résultat de l'invocation.
SignalRCore.InvokeStream('Counter', [10, 500], 'id-000002');
procedure OnSignalRCoreStreamItem(Sender: TObject; StreamItem: TSignalRCore_StreamItem; var Cancel: Boolean);
begin
DoLog('#stream item: ' + StreamItem.Item);
end;
procedure OnSignalRCoreCompletion(Sender: TObject; Completion: TSignalRCore_Completion);
begin
if Completion.Error <> '' then
ShowMessage('Something goes wrong.')
else
ShowMessage('Invocation Successful!');
end;
Invocations de streaming : l'appelant envoie un message à l'appelé et attend un ou plusieurs résultats renvoyés par l'appelé, suivis d'un message indiquant la fin de l'invocation.
Exemple : le client invoque la méthode Counter et demande 10 nombres avec un intervalle de 500 millisecondes.
