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:
- Apps die hoogfrequente updates vanaf de server vereisen. Voorbeelden zijn games, sociale netwerken, stemmen, veilingen, kaarten en GPS-apps.
- Dashboards en monitoring-apps. Voorbeelden zijn bedrijfs-dashboards, directe verkoopupdates of reismeldingen.
- Samenwerkingsapps. Whiteboard-apps en team-meeting-software zijn voorbeelden van samenwerkingsapps.
- Apps die meldingen vereisen. Sociale netwerken, e-mail, chat, games, reismeldingen en veel andere apps gebruiken notificaties.
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.
