第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 ページにリアルタイムで公開する方法を実証します。