SignalR Core para Delphi

· Componentes

 ASP.NET Core SignalR é uma biblioteca open-source que simplifica a adição de funcionalidades web em tempo real às aplicações. A funcionalidade web em tempo real permite que o código do lado do servidor envie conteúdo aos clientes instantaneamente.

Bons candidatos para o SignalR:


O componente SignalR Core do sgcWebSockets usa WebSocket como transporte para conectar a um servidor SignalR Core; se esse transporte não for compatível, um erro será disparado. 

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

Invocations: o chamador envia uma mensagem ao destinatário e espera uma mensagem indicando que a invocação foi concluída e, opcionalmente, um resultado da invocação

Exemplo: o cliente invoca o método SendMessage e passa como parâmetros o nome do usuário e a mensagem de texto. Envia um Invocation Id para receber uma mensagem de resultado do servidor. 

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

Non-Blocking Invocations: o chamador envia uma mensagem ao destinatário e não espera nenhuma mensagem adicional para essa invocação. As invocações podem ser enviadas sem um valor de Invocation ID. Isso indica que a invocação é "não bloqueante".

Exemplo: o cliente invoca o método SendMessage e passa como parâmetros o nome do usuário e a mensagem de texto. O cliente não espera nenhuma resposta do servidor sobre o resultado da invocação. 

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: o chamador envia uma mensagem ao destinatário e espera um ou mais resultados retornados pelo destinatário, seguidos por uma mensagem indicando o fim da invocação.

Exemplo: o cliente invoca o método Counter e solicita 10 números com um intervalo de 500 milissegundos.