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:
- Aplicaciones que requieren actualizaciones de alta frecuencia desde el servidor. Ejemplos: juegos, redes sociales, votaciones, subastas, mapas y aplicaciones GPS.
- Cuadros de mando y aplicaciones de monitorización. Ejemplos: paneles corporativos, actualizaciones de ventas en tiempo real o alertas de viaje.
- Aplicaciones colaborativas. Las aplicaciones de pizarra y el software de reuniones de equipo son ejemplos de aplicaciones colaborativas.
- Aplicaciones que requieren notificaciones. Las redes sociales, el correo electrónico, los chats, los juegos, las alertas de viaje y muchas otras aplicaciones usan notificaciones.
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.
