SignalR Core Delphi

· Componenten

 ASP.NET Core SignalR is een open source-bibliotheek die het eenvoudig maakt om realtime-functionaliteit aan apps toe te voegen. Met realtime-webfunctionaliteit kan server-side code direct content naar clients pushen.

Goede kandidaten voor SignalR:


Het SignalR Core sgcWebSockets-component gebruikt WebSocket als transport om verbinding te maken met een SignalR Core-server; als dit transport niet wordt ondersteund, wordt een fout gegenereerd. 

Delphi-codevoorbeelden 

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: de Caller verstuurt een bericht naar de Callee en verwacht een bericht waaruit blijkt dat de invocation is voltooid en optioneel een resultaat van de invocation.

Voorbeeld: de client roept de SendMessage-methode aan en geeft de gebruikersnaam en het tekstbericht als parameters door. Een Invocation Id wordt meegestuurd om een resultaatbericht van de server te ontvangen. 

SignalRCore.Invoke('SendMessage', ['John', 'Hello All.']); 

Non-Blocking Invocations: de Caller verstuurt een bericht naar de Callee en verwacht geen verdere berichten voor deze invocation. Invocations kunnen verstuurd worden zonder een Invocation ID; dit geeft aan dat de invocation "non-blocking" is.

Voorbeeld: de client roept de SendMessage-methode aan en geeft de gebruikersnaam en het tekstbericht als parameters door. De client verwacht geen respons van de server over het resultaat van de 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; 

Streaming Invocations: de Caller verstuurt een bericht naar de Callee en verwacht één of meer resultaten van de Callee, gevolgd door een bericht dat het einde van de invocation aangeeft.

Voorbeeld: de client roept de Counter-methode aan en vraagt 10 getallen met een interval van 500 milliseconden.