Socket.ioの部屋の仕組み

序文として


私たちのクライアントは、プロジェクトでブラックジャックや遊女とチャットをしたいと考えていました。 NodeJsは私のプロファイルではなく、あまり経験がありませんでした。 (したがって、この記事は、私自身と同じ、nodeとsocket.ioの新規参入者を対象としています)。



それにもかかわらず、私は1つのプロジェクトを行い、それは接続されました-はい、はい、 socket.ioで だから今回は完璧だと思った。 さらに、サイトにはデモとチャットの例さえあります 。 しかし、いつものように、すべては例よりも複雑です。



例のチャットは、絶対に全員にメッセージを送信しました。 どういうわけか、ユーザーを部屋に追加する必要があることは明らかでした。 また、 socket.ioの部屋と名前空間のドキュメントを見ると、 部屋の操作方法が説明されていますが、どのように機能するかは不明です。 ここで私はこれに対処することを提案します。



そして、部屋がどのように機能するかを理解します。 最初から始めましょう-ioオブジェクトのすべてを見てみましょう。



var io = require('socket.io')(http);
      
      







画像



ご覧のとおり、IOは接続されたソケットのすべての識別子を保存します。 そして、これは、ソケット識別子を知っていれば、それを見つけることができることを意味します。



 var socket = io.sockets.connected[socketId];
      
      







つまり 作成時の各ソケットは、それを見つけることができる一意の識別子を受け取ります。 次に、特定の部屋に接続されたソケットを見てみましょう。



 var room = uuid.v4(); socket.join(room);
      
      







画像



ご覧のとおり、デフォルトのソケットIDが自動的に部屋に追加されます。 そこで、部屋のIDを見つけることができます。 したがって、部屋にメッセージを送信すると



 io.sockets.to(room).emit('message', {message: "details"});
      
      







IOは接続されているソケットの部屋を通過し、そこにメッセージを送信すると想定できます。



簡単ですよね? しかし、最初は部屋がどのように機能するかについての理解に対処できなかったと告白しなければなりません。 ですから、この記事が誰かに役立つことを願っています。



All Articles