मैं लिखना चाहता हूँ:

socket.on("create-room", (roomID)=> socket.room = roomID)

let userS_selected_room = 'f2eac135-eafd-49e1-adc7-c89351703896';

for(room in socket.rooms){
  if(room === userS_selected_room) {do_stuff()}
}

मैं इन्हें नहीं समझता: मानचित्र(4), [सेट]

कंसोल.लॉग (सॉकेट.रूम)

Set(4) {
  'zBROv1Lug0XhoQxCAAAB',
  'room1',
  '9e9ecaa6-473a-43a6-9ab7-60ff034ab614',
  '1dc1547c-d265-4d5a-bd3f-9a5d37bf883a'
}

कंसोल.लॉग (सॉकेट)/

...
    rooms: Map(4) {
      '6Otk--hk5SHOVRcrAAAD' => [Set], //socket id 
      'room1' => [Set],
      'f2eac135-eafd-49e1-adc7-c89351703896' => [Set], //this is room id
      '91fdf074-a1e7-493b-97b9-5a6050095697' => [Set] //this is room id
    },
...
-1
NewGuy9000 7 जिंदा 2022, 16:54

1 उत्तर

सबसे बढ़िया उत्तर

वह आउटपुट आपको बता रहा है कि socket.rooms एक Map ऑब्जेक्ट, जो कुंजियों (जैसे '6Otk--hk5SHOVRcrAAAD') को Set ऑब्जेक्ट। आप का उपयोग करके मानचित्र के माध्यम से लूप कर सकते हैं। for-of (for-in नहीं):

for (const [roomid, room] of sockets.rooms) {
    // ...here, `roomid` will be the ID of the room, and
    // `room` will be a `Set`...
}

यदि आपको रूम आईडी की आवश्यकता नहीं है, तो आप values विधि का उपयोग कर सकते हैं और इसके परिणाम को लूप कर सकते हैं:

for (const room] of sockets.rooms.values()) {
    // ...here, `room` will be a `Set`...
}

या यदि आपके पास रूम आईडी है, तो उस कमरे के लिए get के माध्यम से Set प्राप्त करें:

const room = socket.rooms.get(roomID);

Set ऑब्जेक्ट्स में क्या है, यह जानने के लिए आपको socket.rooms को पॉप्युलेट करने के लिए आप जिस भी लाइब्रेरी का उपयोग कर रहे हैं, उसका उल्लेख करना होगा, लेकिन सेट में तत्वों के माध्यम से लूप करने के लिए, आप socket.rooms का उपयोग करेंगे। for-of फिर से:

for (const whatever of room) {
    // ...use `whatever`...
}
1
T.J. Crowder 7 जिंदा 2022, 16:58
socket.io/docs/v3/rooms/#implementation-details - मैं इसे पढ़ रहा था
 – 
NewGuy9000
7 जिंदा 2022, 17:10
यह दिलचस्प है, मुझे नहीं पता था कि Socket.io के पास अब इस कमरे की अवधारणा है। ठंडा!
 – 
T.J. Crowder
7 जिंदा 2022, 17:14