API SignalR

SignalR

 

SignalR bileşeni, bir SignalR sunucusuna bağlanmak için taşıma olarak WebSocket kullanır, bu taşıma desteklenmezse, bir hata oluşturulur.

SignalR istemci bileşeninin, aşağıdaki verileri ayarlayabileceğiniz SignalR adlı bir özelliği vardır:

 

 

İstemci, Metin veya İkili veri göndermeyi destekler.

 

 

Hubs Messages

 

Hubs API, istemciden sunucu yöntemlerini ve sunucudan istemci yöntemlerini çağırmayı mümkün kılar. Kalıcı bağlantı için kullanılan protokol, RPC (uzak prosedür çağrısı) anlamını ifade edecek kadar zengin değildir. Ancak bu, hub bağlantıları için kullanılan protokolün, kalıcı bağlantılar için kullanılan protokolden tamamen farklı olduğu anlamına gelmez. Aksine, hub bağlantıları için kullanılan protokol çoğunlukla kalıcı bağlantılar için kullanılan protokolün bir uzantısıdır.

 

Bir istemci bir sunucu yöntemini çağırdığında, kalıcı bağlantılarda olduğu gibi artık serbest akışlı bir dize göndermez. Bunun yerine, yöntemi çağırmak için gereken tüm bilgileri içeren bir JSON dizesi gönderir. İşte bir istemcinin bir sunucu yöntemini çağırmak için göndereceği örnek bir mesaj:

 


WriteData('{"H":"chathub","M":"Send","A":["Delphi Client","Test message"],"I":0}');

 

Yük aşağıdaki özelliklere sahiptir:

I – invocation tanımlayıcısı – yanıtları isteklerle eşleştirmenize olanak tanır

H – hub'ın adı

M – yöntemin adı

A – argümanlar (bir dizi, yöntemin herhangi bir parametresi yoksa boş olabilir)

 

 

Dize argümanında çift tırnak varsa " yerine \" yazın

 

Örnek: argüman {"test":1} ise, argümanı {\"test\":1} olarak gönderin

 

WriteData('{"H":"chathub","M":"Send","A":["{\"test\":1}"],"I":0}');

 

Authorization

Her bağlantıyla bir kullanıcı ilişkilendirmek ve hangi kullanıcıların kaynaklara erişebileceğini filtrelemek için kimlik doğrulama etkinleştirilebilir. Kimlik doğrulama, Bearer Token'lar kullanılarak uygulanır: istemci bir erişim token'ı sağlar ve sunucu bu token'ı doğrular ve kullanıcıyı tanımlamak için onu kullanır.

 

Şu anda yalnızca Bearer Token'lar desteklenmektedir:

 

Burada, token'ı doğrudan Signal sunucusuna geçirirsiniz (çünkü token başka bir sunucudan elde edilmiştir).

 

 

 


oSignalR := TsgcWSAPI_Signal.Create(nil);
oSignalR.SignalR.Enabled := True;
oSignalR.SignalR.Authentication := srcBearerToken;
oSignalR.SignalR.BearerToken.Token := 'token here';

Bileşen aşağıdaki olaylara sahiptir:

 

OnSignalRConnect

Bu olay, istemci sunucuya başarıyla bağlandığında tetiklenir.

 

OnSignalRDisconnect

Bu olay, istemcinin sunucudan bağlantısı kesildiğinde tetiklenir.

 

OnSignalRError

Bu olay, WebSocket bağlantısında bir hata olduğunda çağrılır.

 

OnSignalRMessage

Kalıcı bağlantı için kullanılan protokol oldukça basittir. Sunucuya gönderilen mesajlar yalnızca ham dizelerdir. Belirli bir biçimde olmaları gerekmez. İstemciye gönderilen mesajlar daha yapılandırılmıştır. Mesajda bulabileceğiniz özellikler şunlardır:

 

C – mesaj kimliği, tüm KeepAlive olmayan mesajlar için mevcuttur

M – gerçek veriyi içeren bir dizi.

 


{"C":"d-9B7A6976-B,2|C,2","M":["Welcome!"]}

 

OnSignalRBinary

Bu olay, sunucudan ikili veri alındığında çağrılır.

 

OnSignalRResult

Bir sunucu yöntemi çağrıldığında, sunucu, çağrı id'sini istemciye göndererek ve – yöntem bir değer döndürdüyse – dönüş değerini ya da – yöntemin çağrılması başarısız olduysa – hatayı göndererek çağrının tamamlandığına dair bir onay döndürür.

Bir sunucu yöntemi çağrısının örnek sonuçları şunlardır:

 


{"I":"0"}

 

Çağırma tanımlayıcısı "0" olan bir sunucu void yöntemi başarıyla tamamlandı.

 


{"I":"0", "R":42}

 

Çağrı tanımlayıcısı "0" olan, bir sayı döndüren bir sunucu yöntemi başarıyla tamamlandı ve 42 değerini döndürdü.

 


{"I":"0", "E":"Error occurred"}

 

OnSignalRKeepAlive

Bu olay, sunucudan bir KeepAlive mesajı alındığında tetiklenir.