sgcWebSockets 2023.2.0 sürümünden itibaren Sunucu Mesaj Yayınını iyileştirmek için yeni bir özellik uygulandı. Groups, sgcWebSockets kütüphanesinde, bağlantıları (tarayıcılar gibi istemcileri temsil eden) adlandırılmış gruplar halinde düzenlemenize olanak tanıyan yeni bir özelliktir. Bu, mesajı her bağlantıya tek tek göndermek yerine bir gruptaki tüm bağlantılara yayınlamanıza olanak tanır. sgcWebSockets Groups, bir sohbet odası veya çok oyunculu bir oyun gibi belirli bir istemci kümesine mesaj yayınlamak istediğiniz senaryolar için yararlıdır.
Kullanıcı ekleme ve kaldırma
Bir gruba kullanıcı eklemek veya gruptan kullanıcı kaldırmak için Add veya Remove metotlarını çağırın ve Grup Adını ile TsgcWSConnection sınıfını iletin. Bağlantı sona erdiğinde bir kullanıcıyı bir gruptan elle kaldırmanıza gerek yoktur.
Aşağıdaki örnek Groups.Add metodunu gösterir.
procedure OnConnect(Connection: TsgcWSConnection);
begin
TsgcWebSocketServer1.Groups.Add('Room1', Connection);
end;
Bir Gruba Mesaj Gönderme
Artık bu bağlantı "Room1" adlı Grubun içindedir; bu grupta daha fazla kullanıcı varsa, Broadcast metodunu kullanarak "Room1" grubunun tüm üyelerine bir mesaj yayınlayabilirsiniz.
TsgcWebSocketServer1.Groups.Group['Room1'].Broadcast('Hello Members of Room1');
Veya "Room" ile başlayan tüm gruplara bir mesaj gönderebilirsiniz (yani Room1, Room2, Room3... varsa bu kullanıcılar bir mesaj alır).
TsgcWebSocketServer1.Groups.Broadcast('Room*', 'Hello Members of Room1');
Broadcast'ın GroupName parametresi, grubun yayınlanan mesaja dahil edilip edilmeyeceğini bilmek için MatchesMask fonksiyonunu kullanır, böylece onu gelişmiş yapılandırmalar için kullanabilirsiniz.
Grup Olayları
Bir gruba her yeni istemci eklendiğinde veya kaldırıldığında Grupları ve İstemcileri işlemek için kullanılabilecek 2 olay vardır:
- OnClientAdded: bir gruba her kullanıcı eklendiğinde bu olay çağrılır.
- OnClientRemoved: bir istemci bir gruptan her kaldırıldığında (genellikle bağlantısı kesildiğinde) çağrılır.
Örneğin, bir üye gruptan ayrıldığında gruba bir mesaj gönderin.
TsgcWebSocketServer1.Groups.OnClientRemoved := OnClientRemovedEvent;
procedure OnClientRemovedEvent(Sender: TObject; const aGroup: TsgcWSServerGroupItem;
const aConnection: TsgcWSConnection);
begin
aGroup.BroadCast('Client ' + aConnection.Guid + ' has disconnected');
end;
sgcWebSockets Groups'un ana özelliklerini gösteren bir Sunucu/İstemci Demosunu aşağıda bulabilirsiniz.
