ASP.NET Core SignalR to biblioteka open-source upraszczająca dodawanie funkcjonalności real-time do aplikacji. Funkcjonalność real-time umożliwia kodowi po stronie serwera natychmiastowe przesyłanie treści do klientów.
Dobre kandydatury dla SignalR:
- Aplikacje wymagające częstych aktualizacji z serwera, np. gry, sieci społecznościowe, głosowania, aukcje, mapy i aplikacje GPS.
- Panele kontrolne i aplikacje monitorujące, np. firmowe dashboardy, bieżące aktualizacje sprzedaży lub alerty podróżne.
- Aplikacje do współpracy, np. tablice whiteboard i oprogramowanie do spotkań zespołowych.
- Aplikacje wymagające powiadomień — sieci społecznościowe, poczta e-mail, czat, gry, alerty podróżne i wiele innych.
Komponent SignalR Core biblioteki sgcWebSockets używa WebSocket jako transportu do połączenia z serwerem SignalR Core. Jeśli ten transport nie jest obsługiwany, zostanie zgłoszony błąd.
Przykłady kodu 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;
Wywołania (Invocations): nadawca wysyła wiadomość do odbiorcy i oczekuje komunikatu potwierdzającego zakończenie wywołania, opcjonalnie wraz z jego wynikiem.
Przykład: klient wywołuje metodę SendMessage, przekazując jako parametry nazwę użytkownika i treść wiadomości. Wysyła identyfikator wywołania (Invocation Id), aby otrzymać wiadomość z wynikiem od serwera.
SignalRCore.Invoke('SendMessage', ['John', 'Hello All.']);
Wywołania nieblokujące (Non-Blocking Invocations): nadawca wysyła wiadomość do odbiorcy i nie oczekuje żadnych dalszych komunikatów dotyczących tego wywołania. Wywołania można wysyłać bez wartości Invocation ID — oznacza to, że wywołanie jest „nieblokujące".
Przykład: klient wywołuje metodę SendMessage, przekazując jako parametry nazwę użytkownika i treść wiadomości. Klient nie oczekuje żadnej odpowiedzi od serwera na temat wyniku wywołania.
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;
Wywołania strumieniowe (Streaming Invocations): nadawca wysyła wiadomość do odbiorcy i oczekuje jednego lub więcej wyników zwróconych przez odbiorcę, a następnie komunikatu wskazującego koniec wywołania.
Przykład: klient wywołuje metodę Counter i żąda 10 liczb w odstępie 500 milisekund.
