SignalR Sunucusu ve İstemcisi C#

· Bileşenler

sgcWebSockets, SignalR ve SignalRCore protokollerini destekler; şimdi CodeProject web sayfasından bir c# örneği kullanarak bir SignalR Sunucusuna nasıl bağlanılacağına dair bir örnek göreceğiz, makaleye şu bağlantıyı kullanarak erişebilirsiniz:

https://www.codeproject.com/Articles/5162436/Simple-SignalR-Server-and-Client-Applications-Demo#_articleTop

Bu makale, protokol olarak SignalR kullanarak basit bir Sunucu ve İstemcinin nasıl oluşturulacağını gösterir, tam csharp kaynağı github'da barındırılır

https://github.com/nthdeveloper/SignalRSamples

Aşağıdaki satırlarda, sgcWebSockets kütüphanesini kullanarak bu SignalR sunucusuna nasıl bağlanılacağını göstereceğim.

Bağlantıyı başlatma

Bir SignalR sunucusuna bağlanmak için, websocket istemcisi olarak TsgcWebSocketClient ve SignalR API olarak TsgcWSAPI_SignalR kullanacağız. Önce websocket istemcisini ve SignalR API'sini oluşturun ve SignalR API'sini WebSocket istemcisine iliştirin.

WSClient := TsgcWebSocketClient.Create(nil);
SignalRAPI := TsgcWSAPI_SignalR.Create(nil);
SignalRAPI.Client := WSClient; 

Ardından sunucu veri bağlantısını ayarlamanız gerekir. Bu durumda, sunucu şu url'de dinliyor: http://localhost:8080. TsgcWebSocketClient, websocket sunucusunun URL'sini ayarlayabileceğimiz URL adlı bir özelliğe sahiptir; websocket protokolünü kullanacağımız için url'miz şu olacaktır: ws://localhost:8080 

WSClient.URL := 'ws://localhost:8080'; 

 Son olarak, SignalR bir Hub adı gerektirir; bu demoda hub adı simplehub'tır.

  SignalRAPI.SignalR.Hubs.Clear;
  SignalRAPI.SignalR.Hubs.Add('simplehub'); 

Ardından, yeni bir bağlantı başlatmak için WSClient.Active := True çağırabiliriz. Sunucu aktifse, başarılı bir bağlantıyı bildiren sunucudan bir mesaj alacağız.

Mesaj Gönder 

 Bağlandıktan sonra sunucuya bir mesaj gönderebiliriz; TsgcWSAPI_SignalR bileşeninden WriteData metodunu kullanacağız. SignalR, tescilli bir protokol kullanır; temelde bazı argümanlara sahip bir JSON mesajıdır. Bu örnekte metot Send olarak adlandırılır ve argüman metin mesajıdır. Mesajlar OnSignalRMessage olayında alınır.

SignalRAPI.WriteData(Format('{"H":"simplehub","M":"Send","A":["%s"],"I":1}', [txtMessage.Text]));
procedure OnSignalRSignalRMessage(Sender: TObject; MessageId, aData: string);
begin
  DoLog('[' + MessageId + '] ' + aData);
end; 

Katılma / Ayrılma mesajları 

 Sunucu örneği, bir gruptan kullanıcı katma ve çıkarma için 2 metoda sahiptir. Mesaj biçimi Send mesajına çok benzer, birkaç örnek görelim:

// join myGroup
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"JoinGroup","A":["%s"],"I":2}', ['myGroup']));
// leave myGroup
SignalRAPI.WriteData(Format('{"H":"simplehub","M":"LeaveGroup","A":["%s"],"I":3}', ['myGroup'])); 

İndirme

Derlenmiş C# ve Delphi projesini şu bağlantıyı kullanarak indirebilirsiniz: