SignalR Core en Delphi

· Componentes

 ASP.NET Core SignalR es una biblioteca de código abierto que simplifica añadir funcionalidad web en tiempo real a las aplicaciones. La funcionalidad web en tiempo real permite que el código del servidor envíe contenido a los clientes de forma instantánea.

Buenos candidatos para SignalR:


El componente SignalR Core de sgcWebSockets usa WebSocket como transporte para conectarse a un servidor SignalR Core; si este transporte no es compatible, se producirá un error. 

Ejemplos de código 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; 

Invocaciones: el llamante envía un mensaje al destinatario y espera un mensaje que indique que la invocación ha finalizado y, opcionalmente, un resultado.

Ejemplo: el cliente invoca el método SendMessage y pasa como parámetros el nombre de usuario y el mensaje de texto. Envía un Invocation Id para recibir un mensaje de resultado del servidor. 

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

Invocaciones no bloqueantes: el llamante envía un mensaje al destinatario y no espera ningún mensaje adicional para esta invocación. Las invocaciones pueden enviarse sin un Invocation ID; eso indica que la invocación es "no bloqueante".

Ejemplo: el cliente invoca el método SendMessage y pasa como parámetros el nombre de usuario y el mensaje de texto. El cliente no espera ninguna respuesta del servidor sobre el resultado de la invocación. 

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; 

Invocaciones por streaming: el llamante envía un mensaje al destinatario y espera uno o varios resultados devueltos por este, seguidos de un mensaje que indica el fin de la invocación.

Ejemplo: el cliente invoca el método Counter y solicita 10 números con un intervalo de 500 milisegundos.