Java

【Java】WebSocketサーバの実装

はじめに

今回は、JavaによるWebSocketサーバーの実装方法を解説します。

今回のサンプルでは、サーバ側はJavaで作成し、クライアント側はjavascriptで実装します。

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

使用するシチュエーションとしては、WEBサイトからサーバーサイドにWebsocket通信し、リアルタイムでデータ取得等を行いたいときに使用します。

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

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

フォルダ構成

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

【サーバーサイド】

サーバサイドフォルダ構成

【クライアントサイド】

クライアントサイドフォルダ構成

プロジェクトの作成

1. サーバサイドのプロジェクト作成

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

2. クライアントサイドのプロジェクト作成

クライアントサイドのプロジェクトについては、ローカルフォルダのどこに作成してもよいです。
本手順では「/Users/ユーザー」配下に「SampleWebSite」というフォルダを作成します。

WebSocketサーバの実装

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

WebSocketでサーバ側がデータを受け取る場合は、@ServerEndpointというアノテーションとエンドポイントを指定し、クライアント側が対象のjavaファイルを見つけられるように目印をつけてやる必要があります。

なお、エンドポイントは今回「/WebSocketServer」とします。

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

■ セッション確立時の処理

■ メッセージ受信時の処理

■ エラー発生時の処理

■ セッション解放時の処理

さいごにクライアントからメッセージを受信したら、「正常にメッセージを受信しました。」というメッセージを送信する処理を実装します。

戻り値を返却するので、onMessageの型をvoid→Stringへ変更するのを忘れないようにしてください。

これでWebSocketサーバは完成です。

最後にコード全体をのせておきます。

WebSocketクライアントの実装

1. index.htmlの作成

SampleWebSiteフォルダへ以下のindex.htmlを作成します。

今回websocket通信部分はjQueryを使用するので、jQueryのライブラリを読みこんでいます。

また、javascriptで受け取ったメッセージをブラウザに表示するようボディ部へid=”message”を埋め込みます。

2. script.jsの作成

SampleWebSiteフォルダへ以下のscript.jsを作成します。

urlは以下のように設定してください。

「ws://localhost:8080/プロジェクト名/エンドポイント」

「Hello World!!」というメッセージを送信し、受信したメッセージは#messageでindex.htmlへ渡しています。

動作確認

1. サーバの起動

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

2. クライアントの起動

以下のURLへアクセスしてください。

file:///Users/ユーザー名/SampleWebSite/index.html

なお、SampleWebSiteフォルダを置いた場所にあわせてURLのパスを指定してください。

3. 結果確認

最後に、コンソールにクライアントから投げた「Hello World!!」というメッセージが
サーバ側のコンソールに出力されており、ブラウザ側へ「正常にメッセージを受信しました。」と出ていたらOKです。

■サーバーサイドコンソール

■ブラウザ

実行結果

Javaエンジニアとしてよりスキルアップ

ここからはJavaエンジニアとしてよりスキルアップしたい方向けのおすすめ記事紹介となります。

JavaフレームワークのデファクトスタンダードであるSpringフレームワーク習得したいけど、何から手をつけたらよいかわからないという方。

以下の記事をお読みください。

【2021年最新版】Springフレームワークおすすめ入門書籍やUdemy講座まとめSpringフレームワーク初学者のときに実際にやった書籍やUdemy講座の中で、もっとも分かりやすく、現場で使える実践的な内容が盛り込まれている入門書籍や講座をまとめました。何から手をつけたらよいかわからないという方や業務についていけないという方はぜひ参考にしてください。...

また、無料で基礎からJavaを学びなおしたいという方は以下の記事を参考にしていただければと思います。

【2020年最新版】Java初心者におすすめの無料スクールランキングTOP3スクールに通いたいけどお金がないという方にむけ、客観的審査基準によるJava無料スクールおすすめランキングを公開しております。Javaエンジニアとして現場で戦力となるために必要な実践的な技術が学べるスクールを厳選してお伝えします。...

さいごまで読んでいただき、ありがとうございました。

フリーランスエンジニア転職完全ロードマップ

知り合いから
「フリーランスエンジニアになれば、年収800万円以上の高報酬でかつ、自由な働き方をチョイスできる」
というのを聞いて、フリーランスエンジニアに興味を持ったのですが、
当時SIer企業でエンジニアをやっていたボクはなかなか一歩踏みだせませんでした。

というもの以下のような不安があったからです。

■フリーランスエンジニアってかなりの技術力がないとなれないのではないのか?

■フリーランスエンジニアって不安定なのではないのか?

■フリーランスエンジニアって人脈やコネ、営業力が必要なのではないのか?

しかし、実際にフリーランスエンジニアになってみて気づきました。

これらはすべて間違いです。

過去のボクのようにフリーランスエンジニアに興味あるけど一歩踏み出せないという方向けに
『フリーランスエンジニア転職完全ロードマップ』
という記事を書きました。

この記事読めば、どうすればフリーランスになれるのかが分かりますので、ぜひ一読ください。