sgcWebSockets 2023.2.0 から、サーバーメッセージブロードキャストを改善する新機能が実装されました。グループは sgcWebSockets ライブラリの新機能で、接続(ブラウザなどのクライアントを表す)を名前付きグループに整理できます。これにより各接続に個別にメッセージを送信する代わりに、グループ内のすべての接続にメッセージをブロードキャストできます。sgcWebSockets グループはチャットルームやマルチプレイヤーゲームなど、特定のクライアントセットにメッセージをブロードキャストしたいシナリオに便利です。
ユーザーの追加と削除
グループにユーザーを追加または削除するには、Add または Remove メソッドを呼び出し、グループ名と TsgcWSConnection クラスを渡します。接続が終了した際にユーザーをグループから手動で削除する必要はありません。
以下の例は Groups.Add メソッドを示しています。
procedure OnConnect(Connection: TsgcWSConnection);
begin
TsgcWebSocketServer1.Groups.Add('Room1', Connection);
end;
グループへのメッセージ送信
この接続が「Room1」というグループ内にある場合、そのグループに他のユーザーがいれば Broadcast メソッドを使用して「Room1」グループのすべてのメンバーにメッセージをブロードキャストできます。
TsgcWebSocketServer1.Groups.Group['Room1'].Broadcast('Hello Members of Room1');
または「Room」で始まるすべてのグループにメッセージを送信することもできます(Room1・Room2・Room3 が存在する場合、それらのユーザーがメッセージを受け取ります)。
TsgcWebSocketServer1.Groups.Broadcast('Room*', 'Hello Members of Room1');
Broadcast の GroupName パラメーターは MatchesMask 関数を使用してグループをブロードキャストメッセージに含めるかどうかを判断するため、高度な設定に利用できます。
グループイベント
新しいクライアントがグループに追加またはグループから削除されるたびにグループとクライアントを処理するために使用できる 2 つのイベントがあります:
- OnClientAdded:ユーザーがグループに追加されるたびに呼び出されます。
- OnClientRemoved:クライアントがグループから削除されるたびに呼び出されます(通常は切断時)。
例:メンバーがグループを離れた際にグループにメッセージを送信します。
TsgcWebSocketServer1.Groups.OnClientRemoved := OnClientRemovedEvent;
procedure OnClientRemovedEvent(Sender: TObject; const aGroup: TsgcWSServerGroupItem;
const aConnection: TsgcWSConnection);
begin
aGroup.BroadCast('Client ' + aConnection.Guid + ' has disconnected');
end;
以下に sgcWebSockets グループの主な機能を示すサーバー/クライアントデモがあります。
