From sgcWebSockets 2023.2.0 une nouvelle fonctionnalité a été implémentée to improve Server Message Broadcasting. Groups est un new feature in la bibliothèque sgcWebSockets, qui te permet d'organiser des connexions (représentant des clients, tels que des navigateurs) en groupes nommés. Cela te permet de diffuser des messages à toutes les connexions d'un groupe au lieu d'envoyer le message à chaque connexion individuellement. Les groupes sgcWebSockets sont utiles pour les scénarios où tu veux diffuser un message vers un ensemble spécifique de clients, comme une salle de chat ou un jeu multijoueur.
Ajout et suppression d'utilisateurs
Pour ajouter ou supprimer des utilisateurs d'un groupe, tu appeler le Add or Remove methods, et et passes le nom du groupe et la classe TsgcWSConnection. Tu n'as pas besoin de supprimer manuellement un utilisateur d'un groupe lorsque la connexion se termine.
L'exemple suivant shows le Groups.Add method.
procedure OnConnect(Connection: TsgcWSConnection);
begin
TsgcWebSocketServer1.Groups.Add('Room1', Connection);
end;
Envoyer des messages vers un groupe
Now, ce connection is inside le Group called "Room1", s'il y a d'autres utilisateurs dans ce groupe, tu peux simplement diffuser un message à tous les membres du groupe "Room1" en utilisant la méthode Broadcast.
TsgcWebSocketServer1.Groups.Group['Room1'].Broadcast('Hello Members of Room1');
Or tu peux envoyer un message à tous groups qui commencent par "Room" (donc s'il existe Room1, Room2, Room3... ces utilisateurs recevront un message).
TsgcWebSocketServer1.Groups.Broadcast('Room*', 'Hello Members of Room1');
Le paramètre GroupName de Broadcast makes use de la function MatchesMask pour savoir si le groupe doit être inclus dans le message diffusé, donc tu peux l'utiliser pour des configurations avancées.
Événements de groupe
Il y a 2 événements qui peuvent être utilisés pour gérer les groupes et les clients chaque fois qu'un nouveau client est ajouté à un groupe ou lorsqu'il est supprimé:
- OnClientAdded: chaque fois qu'un utilisateur est ajouté à un groupe, cet événement est appelé.
- OnClientRemoved: appelé chaque fois qu'un client est supprimé d'un groupe (généralement lors d'une déconnexion).
Exemple, envoyer un message au groupe lorsqu'un membre quitte le groupe.
TsgcWebSocketServer1.Groups.OnClientRemoved := OnClientRemovedEvent;
procedure OnClientRemovedEvent(Sender: TObject; const aGroup: TsgcWSServerGroupItem;
const aConnection: TsgcWSConnection);
begin
aGroup.BroadCast('Client ' + aConnection.Guid + ' has disconnected');
end;
Voici une démo Serveur/Client qui montre les principales fonctionnalités de groupes sgcWebSockets.
