ASP.NET Core SignalR, uygulamalara gerçek zamanlı web işlevselliği eklemeyi basitleştiren açık kaynaklı bir kütüphanedir. Gerçek zamanlı web işlevselliği, sunucu tarafı kodun içeriği istemcilere anında göndermesini sağlar.
SignalR için iyi adaylar:
- Sunucudan yüksek frekanslı güncellemeler gerektiren uygulamalar. Örnekler oyun, sosyal ağlar, oylama, açık artırma, harita ve GPS uygulamalarıdır.
- Gösterge panoları ve izleme uygulamaları. Örnekler arasında şirket gösterge panoları, anlık satış güncellemeleri veya seyahat uyarıları bulunur.
- İşbirliğine dayalı uygulamalar. Beyaz tahta uygulamaları ve ekip toplantı yazılımı, işbirliğine dayalı uygulamalara örnektir.
- Bildirim gerektiren uygulamalar. Sosyal ağlar, e-posta, sohbet, oyunlar, seyahat uyarıları ve diğer birçok uygulama bildirimler kullanır.
SignalR Core sgcWebSockets bileşeni, bir SignalR Core sunucusuna bağlanmak için taşıma olarak WebSocket kullanır; bu taşıma desteklenmiyorsa bir hata oluşturulur.
Delphi Kod Örnekleri
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;
Çağrılar (Invocations): Çağıran (Caller), Çağrılana (Callee) bir mesaj gönderir ve çağrının tamamlandığını belirten bir mesaj ile isteğe bağlı olarak çağrının bir sonucunu bekler
Örnek: istemci SendMessage metodunu çağırır ve parametre olarak kullanıcı adı ile metin mesajını geçirir. Sunucudan bir sonuç mesajı almak için bir Invocation Id gönderir.
SignalRCore.Invoke('SendMessage', ['John', 'Hello All.']);
Bloke Etmeyen Çağrılar: Çağıran, Çağrılana bir mesaj gönderir ve bu çağrı için başka mesaj beklemez. Çağrılar bir Invocation ID değeri olmadan gönderilebilir. Bu, çağrının "bloke etmeyen" olduğunu belirtir.
Örnek: istemci SendMessage metodunu çağırır ve parametre olarak kullanıcı adı ile metin mesajını geçirir. İstemci, çağrının sonucu hakkında sunucudan herhangi bir yanıt beklemez.
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;
Akış Çağrıları (Streaming Invocations): Çağıran, Çağrılana bir mesaj gönderir ve Çağrılan tarafından döndürülen bir veya daha fazla sonucu, ardından çağrının sonunu belirten bir mesajı bekler.
Örnek: istemci Counter metodunu çağırır ve 500 milisaniyelik aralıkla 10 sayı ister.
