Vanaf sgcWebSockets 2023.2.0 is een nieuwe functie geïmplementeerd om server-message-broadcasting te verbeteren. Groups is een nieuwe functie in de sgcWebSockets-bibliotheek waarmee je verbindingen (die clients vertegenwoordigen, zoals browsers) kunt organiseren in benoemde groepen. Hiermee kun je berichten broadcasten naar alle verbindingen in een groep in plaats van het bericht afzonderlijk naar elke verbinding te sturen. sgcWebSockets Groups zijn handig voor scenario's waarin je een bericht wilt broadcasten naar een specifieke set clients, zoals een chatroom of een multiplayer-game.
Gebruikers toevoegen en verwijderen
Om gebruikers toe te voegen aan of te verwijderen uit een groep, roep je de methoden Add of Remove aan en geef je de groepsnaam en de TsgcWSConnection-klasse mee. Je hoeft een gebruiker niet handmatig uit een groep te verwijderen wanneer de verbinding eindigt.
Het volgende voorbeeld toont de methode Groups.Add.
procedure OnConnect(Connection: TsgcWSConnection);
begin
TsgcWebSocketServer1.Groups.Add('Room1', Connection);
end;
Berichten naar een groep sturen
Nu zit deze verbinding in de groep "Room1". Als er meer gebruikers in deze groep zitten, kun je eenvoudig een bericht broadcasten naar alle leden van de groep "Room1" met de methode Broadcast.
TsgcWebSocketServer1.Groups.Group['Room1'].Broadcast('Hello Members of Room1');
Of je kunt een bericht versturen naar alle groepen die beginnen met "Room" (dus als Room1, Room2, Room3... bestaan, ontvangen deze gebruikers een bericht).
TsgcWebSocketServer1.Groups.Broadcast('Room*', 'Hello Members of Room1');
De GroupName-parameter van Broadcast gebruikt de functie MatchesMask om te bepalen of de groep moet worden opgenomen in het gebroadcaste bericht, dus je kunt deze gebruiken voor geavanceerde configuraties.
Groep-events
Er zijn 2 events die kunnen worden gebruikt om de groepen en clients te beheren telkens wanneer een nieuwe client wordt toegevoegd aan een groep of wordt verwijderd:
- OnClientAdded: dit event wordt aangeroepen telkens wanneer een gebruiker wordt toegevoegd aan een groep.
- OnClientRemoved: wordt aangeroepen telkens wanneer een client uit een groep wordt verwijderd (meestal bij verbreking).
Voorbeeld: stuur een bericht naar de groep wanneer een lid de groep verlaat.
TsgcWebSocketServer1.Groups.OnClientRemoved := OnClientRemovedEvent;
procedure OnClientRemovedEvent(Sender: TObject; const aGroup: TsgcWSServerGroupItem;
const aConnection: TsgcWSConnection);
begin
aGroup.BroadCast('Client ' + aConnection.Guid + ' has disconnected');
end;
Vind hieronder een server/client-demo die de belangrijkste functies van sgcWebSockets Groups laat zien.
