WebSocket Groups: canali, utenti e altro

· Funzionalità

A partire da sgcWebSockets 2023.2.0 una nuova funzionalità è stata implementata per migliorare il broadcasting dei messaggi del server. Groups è a new feature in sgcWebSockets libreria, che ti consente di organizzare le connessioni (che rappresentano client, come i browser) in gruppi denominati. Questo ti consente di trasmettere in broadcast messaggi a tutte le connessioni di un gruppo invece di inviare il messaggio a ogni connessione individualmente. I Groups di sgcWebSockets sono utili per scenari in cui vuoi trasmettere in broadcast un messaggio a uno specifico insieme di client, come una chat room o un gioco multiplayer.

Adding e rimuovendo users

To aggiungere o rimuovere utenti da a group, chiama i metodi Add o Remove, e passa il Group Name e la classe TsgcWSConnection. Non devi rimuovere manualmente un utente da un gruppo quando la connessione termina.

The following esempio shows il Groups.Add method. 

procedure OnConnect(Connection: TsgcWSConnection);
begin
  TsgcWebSocketServer1.Groups.Add('Room1', Connection);
end; 

Sending Messaggi a un Group

Now, questo connection is all'interno di il Group chiamato "Room1", se ci sono più utenti in questo gruppo, puoi semplicemente trasmettere in broadcast un messaggio a tutti i membri del gruppo "Room1" utilizzando il metodo Broadcast. 

TsgcWebSocketServer1.Groups.Group['Room1'].Broadcast('Hello Members di Room1'); 


Or puoi send a messaggio a tutti groups che start con "Room" (quindi se esistono Room1, Room2, Room3... questi utenti riceveranno un messaggio). 

TsgcWebSocketServer1.Groups.Broadcast('Room*', 'Hello Members di Room1'); 

The GroupName paramenter di Broadcast utilizza di la funzione MatchesMask to know se il group deve essere incluse in il broadcasted message, quindi puoi utilizzarlo per configurazioni avanzate. 

Group Events

Ci sono 2 eventi che può essere utilizzato a gestire il Groups e Clients ogni volta che un nuovo client viene aggiunto a un gruppo o quando viene rimosso:

- OnClientAdded: ogni volta che un utente viene aggiunto a un gruppo, viene chiamato questo evento.

- OnClientRemoved: chiamato ogni volta che un client viene rimosso da un gruppo (di solito quando si disconnette).

Example, inviare a messaggio a il group quando a member leaves il group.

TsgcWebSocketServer1.Groups.OnClientRimosso := OnClientRemovedEvent;
procedure OnClientRemovedEvent(Sender: TObject; const aGroup: TsgcWSServerGroupItem; 
  const aConnection: TsgcWSConnection);
begin
  aGroup.BroadCast('Client ' + aConnection.Guid + ' ha disconnected');
end; 

Trovi di seguito a Server/Client Demo che shows il principale funzionalità di sgcWebSockets Groups.