Socket.IOの使い方
本記事では、WebRTCの開発にも使用されるNode.jsライブラリ「Socket.IO」の使い方をまとめて紹介します。Socket.IOは、リアルタイムな双方向通信を簡単に実現できる強力なライブラリで、WebRTCと組み合わせることで、音声やビデオチャットなどのリアルタイムアプリケーションの開発が容易になります。
インストール
WebサーバーにはExpressを使用するため、Expressもインストールします。
サーバー <-> クライアント間の通信
サーバー側のサンプルソースコード
io
の定義(代入)方法は一例で、他の指定もあります。クライアントとの通信は、上記のコールバック関数内で記述します。socket
は接続された各クライアントを指します。通信は、双方向に行うことが可能です。
イベントを送信する場合は、socket.emit(eventname, data)
を使用します。一方、イベントを受信する際は、socket.on(eventname, callback)
や、socket.on(eventname, callback(data))
を使って、特定のイベントがトリガーされたときに適切な処理を実行します。これにより、リアルタイムなデータの送受信が容易に行えます。
双方向の通信に同じ構文で使用できるため、実装がシンプルになります。
サーバーがクライアントからのイベントを受信する
クライアントからのイベントをsocket.on(eventName, callback)
で受信します。
部屋に入室する
部屋から退室する
サーバーからクライアントへイベントを送信する
サーバーからクライアントにイベントを送信する際は、以下のような方法を使用します。
特定のクライアントにイベントを送信する
このコードでは、サーバーから特定のクライアントに対して、イベント名と、送信するデータを送信します。socket.emit
を使うことで、サーバーとクライアント間でリアルタイムな通信を簡単に実現できます。
ここで、特定のクライアントを表す変数socket
はconnection
イベントで通知されたオブジェクトです。
特定のクライアントだけでなく、すべての接続されたクライアントにイベントを送信する
特定のクライアントを除く、すべての接続されたクライアントにイベントを送信する
特定のクライアントにイベントを送信する
送信先のソケットID
は相手側のsocket.id
で取得できます。
特定の部屋のクライアントにイベントを送信する
部屋に所属するすべてのクライアントにイベント送信します。
クライアント側のサンプルソースコード
サーバーに接続する
以下の接続は、どれも同じ接続となる。
サーバーからの切断イベント受信
クライアントがサーバーからのイベントを受信する
サーバーからのイベントはsocket.on(eventName, callback)
で受信します。
クライアントからサーバーへイベントを送信する
クライアントからサーバーへのイベント送信はsocket.emit(eventName, data)
を使用します。