sgcWebSockets 2022.1 sürümünden itibaren, sgcWebSockets Pusher istemcisi kendi özel kimlik doğrulamanızı uygulamanıza olanak tanır.
Pusher, yalnızca bağlantı bir kimlik doğrulama belirteci sağladığında private veya presence kanallarına abone olunmasına izin verir; bu da erişimi kısıtlamanızı sağlar.
OnPusherAuthentication olayını kullanarak kendi kimlik doğrulama akışınızı oluşturabilirsiniz; bu olay, abonelik mesajı Pusher tarafından sağlanan gizli anahtarla imzalanmadan önce çağrılır. Bu olayın 2 parametresi vardır: SocketId, kanal adı gibi alanları içeren bir kimlik doğrulama isteği... bunlar isteği kabul edip etmemek için kendi kimlik doğrulama sunucunuz tarafından kullanılabilir. Pusher kimlik doğrulama akışını gösteren bir ekran görüntüsünü aşağıda bulabilirsiniz.
Pusher Private Abonelik Akışı

Delphi Örneği
Bir istemci Pusher sunucusuna bağlandığında, Pusher tarafından sağlanan Key değerini gönderir ve sunucu bir kimlik (socket_id) döndürür.
Bir istemci bir private (veya presence) kanalına abone olduğunda, sgcWebSockets istemcisi, abonelik mesajına dahil edilen bir imza oluşturmak için Pusher tarafından sağlanan Secret Key değerini kullanır. OnPusherAuthentication olayını kullanarak, mesajı imzalamak için gereken alanları yakalayabilir, kendi kimlik doğrulama yöntemlerinizi uygulayabilir ve başarılı olursa imzayı döndürebilirsiniz; bu imza abonelik mesajına dahil edilir ve sunucuya gönderilir.
oClient := TsgcWebSocketClient.Create(nil);
oPusher := TsgcWSAPI_Pusher.Create(nil);
oPusher.Client := oClient;
oPusher.Cluster := 'eu';
Pusher.Name := 'js';
Pusher.Version := '4.1';
Pusher.TLS := True;
Pusher.Key := '9c3b7ef25qe97a00116c';
Pusher.Secret := ''; // the secret key is not known by the client, only by the authentication module
oPusher.OnPusherAuthentication := OnPusherAuthenticationEvent;
procedure OnPusherAuthenticationEvent(Sender: TObject; AuthRequest: TsgcWSPusherRequestAuthentication; AuthResponse: TsgcWSPusherResponseAuthentication);
begin
// if the authentication request is succesful return the signature
if CustomAuthentication(AuthRequest.Channel, AuthRequest.SocketID) then
AuthResponse.Signature := GetCustomAuthenticationSignature;
end;
İmzanın biçimi şöyledir:
Private kanallar: key:HMAC256(SocketID, ChannelName)
Presence kanallar: key: HMAC256(SocketID, ChannelName, Data)
