ASP.NET Core SignalR ist eine Open-Source-Bibliothek, die das Hinzufügen von Echtzeit-Web-Funktionalität zu Anwendungen vereinfacht. Echtzeit-Web-Funktionalität ermöglicht es serverseitigem Code, Inhalte sofort an Clients zu pushen.
Gute Anwendungsfälle für SignalR:
- Apps, die hochfrequente Updates vom Server benötigen. Beispiele sind Gaming-, Social-Network-, Abstimmungs-, Auktions-, Karten- und GPS-Apps.
- Dashboards und Monitoring-Apps. Beispiele sind Unternehmens-Dashboards, sofortige Verkaufs-Updates oder Reise-Warnungen.
- Kollaborative Apps. Whiteboard-Apps und Team-Meeting-Software sind Beispiele für kollaborative Apps.
- Apps, die Benachrichtigungen benötigen. Soziale Netzwerke, E-Mail, Chat, Spiele, Reise-Warnungen und viele andere Apps nutzen Benachrichtigungen.
Die SignalR-Core-sgcWebSockets-Komponente verwendet WebSocket als Transport, um sich mit einem SignalR-Core-Server zu verbinden. Wird dieser Transport nicht unterstützt, wird ein Fehler ausgelöst.
Delphi-Code-Beispiele
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: Der Aufrufer sendet eine Nachricht an den Aufgerufenen und erwartet eine Nachricht, die signalisiert, dass der Aufruf abgeschlossen ist, sowie optional ein Ergebnis des Aufrufs
Beispiel: Der Client ruft die Methode SendMessage auf und übergibt als Parameter Benutzername und Textnachricht. Sendet eine Invocation-Id, um vom Server eine Ergebnisnachricht zu erhalten.
SignalRCore.Invoke('SendMessage', ['John', 'Hello All.']);
Non-Blocking Invocations: Der Aufrufer sendet eine Nachricht an den Aufgerufenen und erwartet keine weiteren Nachrichten zu diesem Aufruf. Aufrufe können ohne Invocation-ID-Wert gesendet werden. Das signalisiert, dass der Aufruf "non-blocking" ist.
Beispiel: Der Client ruft die Methode SendMessage auf und übergibt als Parameter Benutzername und Textnachricht. Der Client erwartet keine Antwort vom Server zum Ergebnis des Aufrufs.
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;
Streaming Invocations: Der Aufrufer sendet eine Nachricht an den Aufgerufenen und erwartet ein oder mehrere vom Aufgerufenen zurückgegebene Ergebnisse, gefolgt von einer Nachricht, die das Ende des Aufrufs signalisiert.
Beispiel: Der Client ruft die Methode Counter auf und fordert 10 Zahlen im Abstand von 500 Millisekunden an.
