23.
簡易チャットアプリ
Chatプロジェクト
ExpressとSocket.ioを利用して、簡易チャットアプリを作成します。
ファイル構成
プロジェクト作成
初期化
「node_chat」プロジェクトを作成し、Node.jsで初期化します。
モジュールインストール
必要なモジュールをインストールします。
- socket.io
- express
- dotenv
- nodemon
.env 作成
.env ファイルを作成し、サーバーのホストとポートを設定します。
.env
スクリプト登録
Node Monitorで起動
「package.json」で、nodemon server を起動するスクリプトを登録します。
package.json
サーバサイド
Express
「server.js」でExpressを作成し、マルチバイト対応とWebルート「pulblic/」を公開します。
server.js
HTTPサーバー
createServerモジュールを読み込み、HTTPサーバーを作成します。
server.js
環境変数読み込み
「.env」から、ホストとポートを読み込みます。
server.js
サーバ待機
HTTPサーバを待機します。
server.js

Socket.io
Socket.io サーバーを作成し、io オブジェクトでWebSocket通信します。
server.js
connectイベント
クライアントからの接続は、connectイベントで設定します。 接続が確立すると、socket.id がクライアントIDとして取得できます。
server.js
メッセージ受信
socket.on() でデータ受信します。イベント名は「chat_message」とします。
server.js
メッセージ送信
io.emit() で接続中のすべてのクライントにメッセージ送信します。 イベント名は「chat_message」とします。
server.js
サーバ起動
サーバプログラムを起動します。
ターミナル
動作確認
http://localhost:3000 にアクセスして、HTTPサーバを確認してみましょう。

クライアント
Chatクライアントを作成し、WebSocket でメッセージを送受信します。
クライアントファイル作成
「public/」にクライアントファイルを作成します。
index.html
Socket.ioインストール
headタグで、クライアント用のSocket.ioライブラリを読み込みます。
public/index.html
メインコンテンツ
メッセージ送信フォームとチャット一覧の領域を作成します。
public/index.html
メインプログラム
Chatのメインプログラム「js/chat.js」を読み込みます。
サーバ接続
io.connect() メソッドにURL指定して、Socket.io でサーバ接続します。
chat.js
- 今回は、HTTPとWebsocketは同じサーバのため、URLは空欄とします。
データ送信イベント
socket.emit() でクライアントからサーバにデータを送信します。イベント名はサーバの socket.on() とあわせます。
emit() でサーバにメッセージ送信します。イベント名は chat_message とします。
chat.js
データ受信イベント
socket.on() でサーバからのイベントを登録できます。 イベント名はサーバの emit() とあわせます。
socket.on() でサーバ受信イベントを登録します。 イベント名はサーバで設定した message とします。
メッセージ表示処理
データを受信したら HTML にメッセージを表示します。
動作確認
複数のブラウザで、チャットメッセージの送受信を確認してみましょう。
クライアントログ
クライアント側は DevTools でログが確認できます。