SignalR Core Delphi

· Komponenten

 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:


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.