socket.io初心者なのですが、以下のようなことをやりたいです。説明が下手かもしれませんがよろしくお願いいたします。
https://localhost:3000/room/fr32454
みたいな部屋をホストが作成します。websocketサーバー側がこのurlに接続した最初の人にhostの状態を与え、あとから接続した人にguestの状態を渡します。hostとguestが振り分け終わって、3人目の人が入ってこれないようにしたくて以下のようなコードを書きました
typescript
1//socketIO 2let hostStatus: boolean = false; 3let guestStatus: boolean = false; 4 5const socketIO = require('socket.io')(server); 6socketIO.on('connection', (socket) => { 7 if (hostStatus == false && guestStatus == false) { 8 hostStatus = true; 9 //クライアントにホストステータスをわたす処理 10 } else if (hostStatus == true && guestStatus == false) { 11 guestStatus = true; 12 //クライアントにゲストステータスを渡す処理 13 } else if(hostStatus == true && guestStatus == true){ 14 alert("この部屋は満杯です"); 15 //3人目の人に部屋からリダイレクトして追い出す処理 16 } 17 18});
この書き方だと、上記とは違うurlに(仮にroom/4teg4とする)接続したとき、status変数はurlごとに共有されてしまうのでしょうか?もし共有されてしまうのなら、どのようにして
1・roomに接続できる人数を制限するのか
2・部屋ごとにhostやguestの状態を保存させればいいのか
以上になります。もし言葉足らずなところがあれば、質問お願いいたします。よろしくお願いいたします
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/12 06:34 編集