Grupy WebSocket: kanały, użytkownicy i więcej

· Funkcje

Od wersji sgcWebSockets 2023.2.0 zaimplementowano nową funkcję poprawiającą rozsyłanie wiadomości przez serwer. Grupy to nowa funkcja biblioteki sgcWebSockets, która pozwala organizować połączenia (reprezentujące klientów, takich jak przeglądarki) w nazwane grupy. Umożliwia to rozsyłanie wiadomości do wszystkich połączeń w grupie zamiast wysyłania wiadomości do każdego połączenia osobno. Grupy sgcWebSockets są przydatne w scenariuszach, w których chcesz rozesłać wiadomość do określonego zestawu klientów, na przykład w pokoju czatu lub grze wieloosobowej.

Dodawanie i usuwanie użytkowników

Aby dodać lub usunąć użytkowników z grupy, wywołaj metodę Add lub Remove, przekazując nazwę grupy i klasę TsgcWSConnection. Nie musisz ręcznie usuwać użytkownika z grupy po zakończeniu połączenia.

Poniższy przykład pokazuje metodę Groups.Add

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

Wysyłanie wiadomości do grupy

To połączenie należy teraz do grupy o nazwie „Room1". Jeśli w tej grupie jest więcej użytkowników, możesz rozesłać wiadomość do wszystkich członków grupy „Room1" za pomocą metody Broadcast. 

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


Możesz też wysłać wiadomość do wszystkich grup zaczynających się od „Room" (jeśli istnieją Room1, Room2, Room3… wszyscy ich użytkownicy otrzymają wiadomość). 

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

Parametr GroupName metody Broadcast używa funkcji MatchesMask, aby sprawdzić, czy dana grupa ma zostać uwzględniona w rozsyłanej wiadomości — możesz go używać do zaawansowanej konfiguracji. 

Zdarzenia grup

Dostępne są 2 zdarzenia do obsługi grup i klientów za każdym razem, gdy nowy klient jest dodawany do grupy lub z niej usuwany:

- OnClientAdded: wywoływane za każdym razem, gdy użytkownik jest dodawany do grupy.

- OnClientRemoved: wywoływane za każdym razem, gdy klient jest usuwany z grupy (zazwyczaj po rozłączeniu).

Przykład: wyślij wiadomość do grupy, gdy członek ją opuszcza.

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

Poniżej znajdziesz demo serwer/klient prezentujące główne funkcje grup sgcWebSockets.