04.サーバーからクライアントへメッセージの拡散の処理を作る
1人のクライアントからサーバーへ送信されたメッセージを、サーバーに接続しているすべてのクライアントへ、拡散する処理を作成します。
解説
サーバーからクライアントへメッセージの拡散に関する処理は、以下です。
- サーバー側で動作するプログラムに、メッセージを全員に送信する処理を追加する。( io.emit( 'spread message',・・・) )
- クライアント側で動作するプログラムに、メッセージを受信する処理を追加する。( socket.on('spread message',・・・) )
- クライアント側で表示させるウェブページに、受信メッセージを表示するリストを追加する。( <ul id="message_list"></ul> )
準備
03.を実施していない場合は、まず、03.を実施します。
サーバー側の処理
「server.js」 の「接続時の処理」の中に、「送信元含む全員に送信」処理を追加します。
「server.js」 全体としては、以下のようにします。
クライアント側の処理
「public/client.js」 の末尾に、以下の「サーバーからのメッセージ拡散に対する処理」を追加します。
「public/client.html」全体としては、以下のようにします。
拡散メッセージのリスト表示
「public/index.html」 の、「body」部のメッセージ入力フォームの下に、以下のメッセージリストを追加します。
「public/index.html」全体としては、以下のようにします。
動作確認
サーバーを起動します。
「MyChat」フォルダで、下記コマンドを実行します。
ブラウザから、「localhost:1337」にアクセスします。
例えば、「aiueo」と「あいうえお」というメッセージをフォームに入力し、「Send」ボタンを押します。
送信したメッセージが、リスト表示されます。
Chrome のデベロッパーツールの 「Console」に、
「connect」
に続いて、
「#input_message : aiueo」
「spread message : aiueo」
「#input_message : あいうえお」
「spread message : あいうえお」
と表示されます。
サーバー側では、
「connection」
に続いて、
「new message aiueo」
「new message あいうえお」
と表示されます。
動作確認(2つの目のクライアントから接続)
ブラウザを別に立ち上げ、「localhost:1337」にアクセスします。
別に立ち上げたブラウザから、例えば、「abc」と「xyz」というメッセージをフォームに入力し、「Send」ボタンを押します。
送信したメッセージが、両方のブラウザに、即座に、リスト表示されます。
サーバー側では、
「connection」
「new message aiueo」
「new message あいうえお」
に続いて、
「connection」
「new message abc」
「new message xyz」
と表示されます。
起動したサーバーは、「Ctrl + C」で終了します。
ダウンロード
関連ページ
前項目:03.クライアントからサーバーへのメッセージの送信の処理を作る
次項目:05.メッセージにメッセージ時刻を加える