Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerWebSockets Connector が使用するソケットグループは、WebSockets クライアントが必要に応じてサブスクライブできる文字列 ID です。これは、いわゆるメッセージ分離に便利です。メッセージ分離により、アプリケーションで単一のメッセージを異なる WebSockets クライアントのグループにブロードキャストできます。
グループを利用する方法の例は、ブロードキャスト操作のドキュメントに記載されています。
<websocket:inbound-listener>
トリガーと <websocket:open-outbound-socket>
操作の両方で、デフォルトのグループを指定できます。これは、新規のインバウンドおよびアウトバウンドソケットがすべて自動的にサブスクライブされるグループです。
手動でのサブスクライブまたはグループからのソケットのサブスクライブ解除が必要になるユースケースもあります。たとえば、インバウンド WebSocket が確立されるマルチテナントアプリケーションのユースケースを考えてみましょう。イニシエーターの HTTP 要求には clientId
と呼ばれる認証ヘッダーが含まれます。クライアント ID を検証して、クライアントが属する組織を識別する orgId
と呼ばれる変数を設定する fetch-client-details
と呼ばれるフローをコールします。ソケットがその組織を識別するグループに追加されます。
(組織 ID) にサブスクライブされるグループはランタイムにしか決定できないため、グループサブスクリプションは動的です。
フローの例を次に示します。
<flow name="onIncomingMessageFlow">
<websocket:inbound-listener path="/feed" config-ref="ws" />
<!-- Store relevant information in variables -->
<set-variable variableName="socketId" value="#[attributes.socketId]" />
<set-variable variableName="authHeader" value="#[attributes.headers.clientId]" />
<!-- Validate the auth Header -->
<flow-ref name="fetch-client-details" />
<!-- Perform group subscription -->
<websocket:subscribe-groups
socketId="#[vars.socketId]"
groups="#[[vars.orgId]]"
config-ref="ws" />
</flow>
このユースケースの裏側として、グループから動的にサブスクライブ解除する必要もあり、これは <websocket:unsubscribe-groups>
操作を使用して実行できます。
<websocket:unsubscribe-groups
socketId="#[vars.socketId]"
groups="#[[vars.orgId]]"
config-ref="ws" />