WebSockets Connector - Mule 4

WebSockets Connector バージョン 1.0

WebSockets 用 Anypoint Connector (WebSockets Connector) には、次のインテグレーション機能があります。

  • サーバーとクライアント間で双方向全二重通信を確立する

  • サーバーのプッシュ通知を実装する

  • 既存の HTTP インフラストラクチャ上でシームレスに機能する

  • クライアントが定期的にサーバーの新しいデータをポーリングしないで済む

WebSocket は、クライアントとサーバー間の双方向 TCP 接続で、アプリケーションで接続を終了するまで開いたままになっています。WebSocket の場合、アプリケーションは HTTP を使用して初期接続を行います。その後、接続がソケットベースの TCP 接続にアップグレードされます。

全二重の利点

従来の HTTP では、接続は半二重 (一方向) で、要求-応答メッセージエクスチェンジパターンを使用することで機能します。

  1. クライアントはサーバーに接続して要求を送信します。

  2. サーバーは要求を処理して応答を返します。クライアントが応答を受信すると接続が終了します。

従来の HTTP 接続では、クライアントアプリケーションがサーバーから応答を受信するまでブロックされるため、膨大なオーバーヘッドが必要になります。また、この接続種別では、クライアントが常に要求を開始する必要があります。そのため、サーバーは複数のアプリケーションに同時に通知をプッシュできません。

クライアントが WebSockets を使用してサーバーに接続すると、永続接続が確立され、開いたままになります。クライアントとサーバーの両方で複数のメッセージを相互に送信でき、HTTP 要求-応答メッセージエクスチェンジパターンに従う必要はありません。

WebSocket は、既存の HTTP インフラストラクチャ上に構築されるため、従来の HTTP のためにすでに用意されているインフラストラクチャを簡単に再利用できます。

WebSockets Connector の一般的なユースケース

WebSockets Connector は、HTTP 要求-応答メッセージエクスチェンジパターンによって引き起こされるオーバーヘッドを回避する必要のあるリアルタイムアプリケーションで役立ちます。

WebSockets Connector の一般的なユースケースとして、チャットアプリケーションや株価情報アプリケーションなどが挙げられます。

チャットアプリケーション

チャットアプリケーションでは、サブスクライブしている参加者はクライアントがチャットグループにメッセージを送信した直後にそのメッセージを受信したいと考えています。アプリケーションが HTTP を使用する場合、クライアントは定期的にサーバーの使用可能なメッセージをポーリングする必要があるため、パフォーマンスが低下します。WebSockets を使用すると、サーバーは使用可能なメッセージをすべてのサブスクライブしているユーザーにプッシュできます。

株価情報アプリケーション

クライアントは、一連の株式の更新価格を継続的に送信する株価情報サービスに対して WebSocket を開いておくことができます。このような価格は絶え間なく変化するため、同じ接続を再利用して不定期にメッセージを受信できる WebSockets は、この問題の最適なソリューションになります。この場合、クライアントは接続の確立後にサーバーにメッセージを送信しません。

互換性

WebSockets Connector は、以下と互換性があります。

App/Service

バージョン

Mule

4.2.2 以上

Java

1.8.0_x

Anypoint Studio

7.4 以上

始める前に

アプリケーションを作成する前に、WebSockets の対象リソースおよび Anypoint Platform へのアクセス権を持っている必要があります。Anypoint Studio を使用して Mule アプリケーションを作成する方法を理解しておく必要があります。

WebSockets の基本概念

WebSockets Connector のしくみを理解するには、次の概念が不可欠です。

ソケット種別

WebSockets には次の 2 種類があります。

  • Inbound (インバウンド)
    Mule アプリケーションが受信接続をリスンするときに作成される WebSocket。

    このシナリオでは、外部システムが Mule アプリケーションによって公開されたエンドポイントに接続します。

  • Outbound
    Mule アプリケーションが外部システムに接続したときに作成される WebSocket。

    このシナリオでは、Mule アプリケーションが通信を開始し、WebSocket を確立するように外部システムに依頼します。

ソケット ID

すべての WebSockets (インバウンドとアウトバウンドの両方) に、それらを識別する一意のソケット ID があります。アプリケーションは、それらの ID を参照して、個々の WebSockets を操作する必要があります。

Groups (グループ)

WebSockets Connector には、グループ (個々の WebSockets が必要に応じてサブスクライブできる文字列識別子) の概念が導入されています。アプリケーションは、グループを使用して 1 つメッセージをさまざまな WebSockets のグループにブロードキャストできます。グループを使用すると、各ブロードキャストに参加すべき WebSockets を識別するためのプロセスが促進されます。

サブスクリプションは、WebSockets Connector 設定の各インスタンスのコンテキストにのみ存在します。そのため、Mule アプリケーションとリモートシステム間で WebSockets を確立した場合、グループに接続するための Mule 側の WebSockets にサブスクライブしても、リモートシステム側の WebSockets には影響しません。

トリガー

トリガーにより、メッセージやイベント通知の受信時にフローの実行が開始されます。WebSockets 関連のイベントで次のトリガーを指定できます。

  • On New Inbound Message

    外部システムが接続でき、メッセージの受信時に含まれているフローを開始するエンドポイントを公開します。

  • On New Inbound Connection

    インバウンドリスナーへの新しい接続が確立されたときにフローを開始します。

  • On New Outbound Message

    アウトバウンド WebSockets が外部システムからメッセージを受信したときにフローを開始するエンドポイントを公開します。

  • On Socket Closed

    インバウンドまたはアウトバウンド WebSockets の終了時に含まれているフローを開始します。

操作

WebSockets 用 Anypoint Connector (WebSockets Connector) は次の操作をサポートしています。

  • Open Outbound Socket

    外部システムに接続し、アウトバウンド webSocket を作成します。

  • 送信

    WebSocket 経由でメッセージを送信します。

  • Subscribe Groups

    1 つ以上のグループに WebSocket をサブスクライブします。アプリケーションは、同じ WebSocket でこの操作を複数回呼び出します。各呼び出しは前の呼び出しに追加されていきます。反復するグループは無視されます。

  • Unsubscribe Groups

    1 つ以上のグループから WebSocket をサブスクライブ解除します。この操作は、同じソケットで複数回呼び出すことができます。各呼び出しは前の呼び出しに追加されていきます。反復するグループは無視されます。

  • ブロードキャスト

    パス、種別、グループで分類された複数の WebSockets にメッセージを送信します。

  • Close Socket

    WebSocket の接続を終了します。

  • Bulk Close Socket

    複数の WebSocket の接続を終了します。

セキュリティ

WebSockets Connector では、TLS で次の URI スキームを使用してクライアントおよびサーバーエンドポイントを保護できます。

  • WS は、暗号化を使用せずに WebSocket サーバーおよびリソース名を識別します (例: ws://localhost:80​)。

  • WSS は、TLS で保護して WebSocket サーバーおよびリソース名を識別します (例: wss://localhost:433​)。

WebSockets Connector と Runtime Fabric

WebSockets Connector を使用する Mule アプリケーションを開発して Mule を Runtime Fabric にデプロイする場合、Runtime Fabric で WebSockets Connector を有効にするために必要な追加の設定はありません。