04.サーバーからクライアントへメッセージの拡散の処理を作る



1人のクライアントからサーバーへ送信されたメッセージを、サーバーに接続しているすべてのクライアントへ、拡散する処理を作成します。

解説

サーバーからクライアントへメッセージの拡散に関する処理は、以下です。

  1. サーバー側で動作するプログラムに、メッセージを全員に送信する処理を追加する。( io.emit( 'spread message',・・・) )
  2. クライアント側で動作するプログラムに、メッセージを受信する処理を追加する。( socket.on('spread message',・・・) )
  3. クライアント側で表示させるウェブページに、受信メッセージを表示するリストを追加する。( <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.メッセージにメッセージ時刻を加える