2.13. WebSocketの作成

2.13.1. WebSocketとは

WebSocket (ウェブソケット)は、コンピュータ・ネットワークにおける双方向通信用の通信規格の一つです。
サーバとクライアントで一度コネクションを行った後は、必要な通信を全てそのコネクション上で専用のプロトコルを用いて行うため、 従来の手法に比べると、新たなコネクションを張ることがなくなります。 そのため、通信ロスが減り一つのコネクションで全てのデータ送受信が行えるため、同一サーバに接続する他のアプリケーションへの影響が少ないなどのメリットがあります。
WebOTX Application Server ではJSR 356で定義された、Java標準仕様ベースのWebSocketを使用できます。

なお、WebSocketを利用するには、WebOTXの内蔵WebサーバのHTTPリスナのtypeをNIO(New IO)に変更して、このHTTPリスナを使う必要があります。
設定の詳細は   [リファレンス > コンフィグレーション(設定一覧) > Webコンテナ設定項目一覧 > HTTPリスナ(コネクタのtype)の設定 ]を参照してください。

2.13.2. WebSocket(Java 標準API(JSR 356)のWebSocket)作成ウィザードについて

メニュー ファイル新規その他WebWebSocket を選択します。或いは、
プロジェクトを選択し、その右クリックメニューの WebプロジェクトWebSocketの作成を選択します。
2.13.2.1. サーバエンドポイントの作成
この画面で、サーバエンドポイントの作成の詳細を指定します。


図2.2.13.2-1

表2.2.13.2-1
項目 説明 初期値
プロジェクト Webプロジェクト名を指定します。 選択されるプロジェクト
ソース・フォルダー WebSocketサーバエンドポイントクラスのソースフォルダーを指定します。 選択されるソースフォルダー
パッケージ WebSocketサーバエンドポイントクラスのJavaパッケージを指定します。 com.nec.websocket
クラス名 WebSocketサーバエンドポイントクラスのクラス名を指定します。  
WebSocket URL
WebSocketのURLです。
 
エンコーダ・デコーダを作成する
エンコーダ・デコーダクラスを作成します。
OFF
Javaソース(Java 標準API) で作成
クライアントエンドポイントクラスのJavaソースを作成します。
ON
HTML形式(Javascript) で作成
HTMLファイルを作成します。
ON

Memo
「WebSocket URL」の入力値について、先頭に「/」を入力する必要はありません。ソースには自動で「/」が付きます。
例えば、「websocket」と入力した場合、エンドポイントクラスに「@ServerEndpoint(value = "/websocket")」と生成され、クライアントエンドポイントメインクラスに「String URL = "ws://localhost:80/{プロジェクト名}/websocket";」と生成されます。また、HTMLファイルに「ws = new WebSocket("ws://localhost:80/{プロジェクト名}/websocket");」と生成されます。

Memo
クライアントエンドポイントメインクラスとHTMLファイルのホストとポートは、環境に応じてソースを手修正する必要があります。
例えば、クライアントエンドポイントメインクラスの「String URL = "ws://localhost:80/{プロジェクト名}/{WebSocket URLの入力値}";」とHTMLファイルの「ws = new WebSocket("ws://localhost:80/{プロジェクト名}/{WebSocket URLの入力値}");」を自動で生成した場合、その中の「localhost:80」をサーバ側のホストとポートに手修正してください。

2.13.2.2. エンコーダの作成
エンコーダ・デコーダを作成する をONにし、 次へ をクリックします。この画面で、エンコーダの情報を指定します。


図2.2.13.2-2

表2.2.13.2-2
項目 説明 初期値
ソース・フォルダー WebSocketエンコーダクラスのソースフォルダーを指定します。 選択されるソースフォルダー
パッケージ WebSocketエンコーダクラスのJavaパッケージを指定します。 com.nec.websocket
名前 エンコーダの名前。 {サーバエンドポイントクラス名}Encoder
インターフェース
エンコーダクラスのインターフェースです。
Encoder.Text<T>
データタイプ
インターフェースのデータタイプを指定します。
java.lang.String

2.13.2.3. デコーダの作成
次へ をクリックします。この画面で、デコーダの情報を指定します。


図2.2.13.2-3

表2.2.13.2-3
項目 説明 初期値
ソース・フォルダー WebSocketデコーダクラスのソースフォルダーを指定します。 選択されるソースフォルダー
パッケージ WebSocketデコーダクラスのJavaパッケージを指定します。 com.nec.websocket
名前 デコーダクラスの名前。 {サーバエンドポイントクラス名}Decoder
インターフェース
デコーダクラスのインターフェースです。
Decoder.Text<T>
データタイプ
インターフェースのデータタイプです。
java.lang.String

2.13.2.4. クライアントエンドポイントの作成
次へ をクリックします。この画面で、クライアントエンドポイントの詳細を指定します。


図2.2.13.2-4

表2.2.13.2-4
項目 説明 初期値
ソース・フォルダー WebSocketクライアントエンドポイントクラスのソースフォルダーを指定します。 選択されるソースフォルダー
パッケージ WebSocketクライアントエンドポイントクラスのJavaパッケージを指定します。 com.nec.websocket
クラス名 クライアントエンドポイントクラスのクラス名です。 {サーバエンドポイントクラス名}ClientEndpoint

2.13.2.5. HTMLファイルの作成
次へ をクリックします。この画面で、WebSocketのHTMLページの詳細を指定します。


図2.2.13.2-5

表2.2.13.2-5
項目 説明 初期値
ファイル名 HTMLファイルの名前を指定します。
拡張子が.htm.html または 拡張子なし のファイルが指定できます。
拡張子なしの場合、.htmlのファイルが生成されます。
{サーバエンドポイントクラス名}.html
親フォルダー HTMLファイルのフォルダーを指定します。
指定するのは、WebプロジェクトのWebContentフォルダからの相対パスです。
例えば、「websocket」を指定する場合、プロジェクトのWebContent/websocketフォルダーにHTMLファイルが生成されます。
何も指定しない場合、WebContent直下に生成します。
websocket