Java

【Java】WebSocketクライアントの実装

はじめに

今回は、JavaによるWebSocketクライアントの実装方法を解説します。

今回のサンプルでは、WebSocketクライアントを作成し、
動作確認のためサーバ側の処理(Java)も実装します。

最終的にはサーバ側でクライアントから送信したメッセージが受け取れることを確認します。

使用するシチュエーションとしては、
JavaをキックしてWebsocketでリクエストするようなシチュエーションで使用します。

以降、以下のバージョン、環境での解説となります。

IDE:eclipse
Tomcatバージョン:8.5
Javaバージョン:8

フォルダ構成

今回作成するサンプルソースのフォルダ構成は以下の通りです。

スクリーンショット 2018-11-10 1.53.13.png

プロジェクトの作成

1. WebSocketクライアントのプロジェクト作成

パッケージエクスプローラーで右クリック>新規>Javaプロジェクトを選択し、「SampleClient」というプロジェクトを作成します。

2. サーバのプロジェクト作成

パッケージエクスプローラーで右クリック>新規>その他>Web>動的Javaプロジェクトを選択し、「SampleServer」というプロジェクトを作成します。

WebSocketクライアントのライブラリダウンロード

WebSocketクライアントを実装するには外部からライブラリをダウンロードする必要があります。

まずは、以下のサイトへアクセスしてください。

https://tyrus.java.net/

赤枠部分をクリックしてください。

スクリーンショット 2018-11-09 23.21.22.png

赤枠のダウンロードリンクをクリックします。

スクリーンショット 2018-11-09 23.21.48.png

ページ下部にある赤枠部分をクリックします。

スクリーンショット 2018-11-09 23.22.05.png

ダウンロードボタンをクリックします。

スクリーンショット 2018-11-09 23.22.24.png

すると、「tyrus-standalone-client-1.12.jar」というファイルがダウンロードされると思いますので、そのファイルを以下へコピーします。

workspace/SampleClient/lib

次に、SampleClientを右クリック>プロパティ>Javaのビルド・パス>ライブラリタブを選択し、JARの追加ボタンを押下します。

スクリーンショット 2018-11-09 23.27.42.png

さきほどコピーしたjarファイルを選択し、OKボタンを押します。

スクリーンショット 2018-11-09 23.28.20.png

Javaのビルド・パス画面のライブラリーに選択したjarファイルが表示されていれば、適用して閉じるボタンを押します。

スクリーンショット 2018-11-09 23.28.35.png

WebSocketクライアントの実装

WebSocketClient.javaを作成し、まず必要なライブラリをインポートします。

Websocketのセッション確立やメッセージ送受信など、Websocketクライアントとしてのライフサイクルを回すために必要なClientEndpointというアノテーションをクラスの先頭につけます。

また、super()メソッドを使用し、ClientEndpointのコンストラクタを呼び出します。

続いてアノテーションを利用して、以下の処理を実装します。

– セッション確立時の処理
– メッセージ受信時の処理
– エラー発生時の処理
– セッション解放時の処理

最後に、WebSocketを起動するためのメインメソッドをコーディングします。

これでWebSocketクライアントは完成です。
最後にコード全体をのせておきます。

サーバ側の処理

動作確認のため、サーバ側の処理を実装します。

WebSocketでサーバ側がデータを受け取る場合は、@ServerEndpointというアノテーションとエンドポイントを指定し、クライアント側がアクセスできるようにしてやる必要があります。

また、データを受け取れるようクライアントと同様に@OnMessageをアノテーションにし、メッセージを受信したら、「メッセージを受信しました。:[message]」とコンソールに出力されるようにします。

サーバ側の処理は以上です。

動作確認

1. サーバの起動

WebSocketServer.javaを右クリック>実行>サーバで実行をクリックし、
サーバを起ち上げます。

2. クライアントの起動

WebSocketClient.javaを右クリック>実行>Javaアプリケーションをクリックし、
クライアントを起動します。

3. 結果確認

最後に、コンソールにクライアントから投げた「Hello World!!」というメッセージが
サーバ側のコンソールに出力されていればOKです。

さいごに

Javaは基本サーバサイドで使用されることが多いためか、WebSocketクライアントを使用する機会があまりないのか参考サイトがあまりなかったので、実際に業務で使用したプログラムをもとにサンプル作成しました。

私自身は機械に内臓されている制御系プログラム(Java)からサーバへ機械の状態をWebSocket通信するという案件で、JavaのWebクライアントの実装を行いました。

ぜひ参考にしていただければと思います。