Fuse 6 is no longer supported
As of February 2025, Red Hat Fuse 6 is no longer supported. If you are using Fuse 6, please upgrade to Red Hat build of Apache Camel.第184章 Websocket
WebSocket コンポーネント リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.10 以降で利用可能
Websocket コンポーネントは、Websocket を使用してクライアントと通信するための WebSocket エンドポイント を提供します。コンポーネントは Eclipse Jetty Server を使用します。これは、IETF 仕様(ドラフトおよび RFC 6455)を実装します。
ws://
および wss://
のプロトコルをサポートします。wss://
プロトコルを使用するには、SSLContextParameters
オブジェクトを定義する必要があります。
現在サポートされているバージョン
Camel 2.10 は Jetty 7.5.4.v20111024 を使用するため、D00 から D13 IETF 実装のみを利用できます。Camel 2.11 は Jetty 7.6.7 を使用します。
URI 形式 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
websocket://hostname[:port][/resourceUri][?options]
websocket://hostname[:port][/resourceUri][?options]
URI にクエリーオプションは
?option=value&option=value&.. の形式で追加できます。
コンポーネントオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
ホストを WebSocket サーバーとして機能するように設定するには、使用する前に websocket コンポーネントを設定できます。
オプション | デフォルト | 説明 |
---|---|---|
host
|
0.0.0.0 | ホスト名。 |
port
|
9292 | ポート番号。 |
staticResources
|
null
|
index.html ファイルなどの静的リソースのパス。このオプションが設定された場合、サーバーは指定されたホスト名とポートで起動し、index.html ファイルなどの静的リソースを処理します。このオプションが設定されていない場合、サーバーは起動されません。 |
sslContextParameters
|
レジストリー の org.apache.camel.util.jsse.SSLContextParameters オブジェクトへの 参照。 この参照は、コンポーネントレベルで設定された SSLContextParameters を上書きします。Security Guide および Using the JSSE Configuration Utility の Configuring Transport Security for Camel Components の章 を参照してください。
|
|
enableJmx
|
false
|
このオプションが true の場合、このエンドポイントに対して Jetty JMX サポートが有効になります。 |
sslKeyPassword
|
null
|
コンシューマーのみ: SSL 使用時のキーストアのパスワード。 |
sslPassword
|
null
|
コンシューマーのみ: SSL を使用する場合のパスワード。 |
sslKeystore
|
null
|
コンシューマーのみ: キーストアへのパス。 |
minThreads
|
null
|
コンシューマーのみ: サーバースレッドプールでスレッドの最小数の値を設定するには、以下を実行します。 |
maxThreads
|
null
|
コンシューマーのみ: サーバースレッドプールの最大スレッド数に値を設定します。 |
threadPool
|
null
|
コンシューマーのみ: サーバーにカスタムスレッドプールを使用します。 |
エンドポイントオプション リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
WebsocketEndpoint
は、使用前に設定できます。
オプション | デフォルト | 説明 |
---|---|---|
sslContextParametersRef
|
非推奨および は Camel 3.0: Registry の org.apache.camel.util.jsse.SSLContextParameters への参照で削除され ます。 この参照は、コンポーネントレベルで設定済みの SSLContextParameters を上書きします。Using the JSSE Configuration Utility を参照してください。代わりに sslContextParameters オプションを使用してください。
|
|
sslContextParameters
|
Camel 2.11.1: レジストリー の org.apache.camel.util.jsse.SSLContextParameters への 参照。この参照は、コンポーネントレベルで設定済みの SSLContextParameters を上書きします。Security Guide および Using the JSSE Configuration Utility の Configuring Transport Security for Camel Components の章 を参照してください。
|
|
sendToAll
|
null
|
プロデューサーのみ: すべての WebSocket サブスクライバーに送信する。メッセージで WebsocketConstants.SEND_TO_ALL ヘッダーを使用する代わりに、エンドポイントレベルで を設定できます。
|
staticResources
|
null
|
Web リソースまたはクラスパスのルートディレクトリー。コンポーネントがファイルシステムまたはクラスパスからリソースを読み込むかどうかに応じて、プロトコル file: または classpath: を使用します。 |
sslContextParameters
|
|
レジストリー の
org.apache.camel.util.jsse.SSLContextParameters オブジェクトへの 参照。この参照は、コンポーネントレベルで設定済みの SSLContextParameters を上書きします。Security Guide および Using the JSSE Configuration Utility の Configuring Transport Security for Camel Components の章 を参照してください。
|
enableJmx
|
false
|
このオプションが true の場合、このエンドポイントに対して Jetty JMX サポートが有効になります。詳細は Jetty JMX support を参照してください。
|
sslKeyPassword
|
null
|
コンシューマーのみ: SSL 使用時のキーストアのパスワード。
|
sslPassword
|
null
|
コンシューマーのみ: SSL を使用する場合のパスワード。
|
sslKeystore
|
null
|
コンシューマーのみ: キーストアへのパス。
|
minThreads
|
null
|
コンシューマーのみ: サーバースレッドプールでスレッドの最小数の値を設定するには、以下を実行します。
|
maxThreads
|
null
|
コンシューマーのみ: サーバースレッドプールの最大スレッド数に値を設定します。
|
threadPool
|
null
|
コンシューマーのみ: サーバーにカスタムスレッドプールを使用します。
|
メッセージヘッダー リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
WebSocket コンポーネントは 2 つのヘッダーを使用して、メッセージを単一/現在のクライアント、またはすべてのクライアントに送信することを示します。
キー | 説明 |
---|---|
WebsocketConstants.SEND_TO_ALL
|
現在接続しているすべてのクライアントにメッセージを送信します。このヘッダーを使用する代わりに、エンドポイントで sendToAll オプションを使用できます。
|
WebsocketConstants.CONNECTION_KEY
|
指定の接続キーを使用してクライアントにメッセージを送信します。 |
使用方法 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
この例では、Camel はクライアントが通信できる WebSocket サーバーを公開します。Websocket サーバーは、
0.0.0.0:9292
というデフォルトのホストおよびポートを使用します。この例では、入力の echo を送り返します。メッセージを送信するには、変換されたメッセージを同じエンドポイント "websocket://echo"
に送信する必要があります。メッセージングのデフォルトは InOnly であるため、この設定が必要です。
この例はユニットテストの一部で、ここでは を参照してください。クライアントとして、Web ソケットのサポートを提供する AHC ライブラリーを使用します。
さらに、webapp リソースの場所が定義され、Jetty Application Server が WebSocket サーブレットを登録するだけでなく、ブラウザーの Web リソースも公開できるように定義されています。リソースは webapp ディレクトリーの下に定義する必要があります。
from("activemq:topic:newsTopic") .routeId("fromJMStoWebSocket") .to("websocket://localhost:8443/newsTopic?sendToAll=true&staticResources=classpath:webapp");
from("activemq:topic:newsTopic")
.routeId("fromJMStoWebSocket")
.to("websocket://localhost:8443/newsTopic?sendToAll=true&staticResources=classpath:webapp");
Webocket コンポーネントの SSL の設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
JSSE 設定ユーティリティーの使用 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Camel 2.10 の時点で、Websocket コンポーネントは Using the JSSE Configuration Utility を通じて SSL/TLS 設定をサポートします。このユーティリティーは、作成する必要のあるコンポーネント固有のコードの量を大幅に減らし、エンドポイントおよびコンポーネントレベルで設定可能です。 以下の例は、エンドポイントの設定方法を示しています。> Security Guide の Configuring Transport Security for Camel Components の章を参照してください。
エンドポイントの Spring DSL ベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
エンドポイントの Java DSL ベースの設定 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
- Twitter Websocket Example では、twitter 検索の定数フィードをポーリングし、Web ソケットを使用して結果を Web ページにリアルタイムで公開する方法を実証します。