Mi stavo chiedendo quale sia lo scopo delle camere. Vedi: link
Puoi sostanzialmente imitare join
e leave
con solo socket.on
e socket.off
Prendi ad esempio:
(nessuna stanza)
client:
socket.on('chat', (data) => {
console.log("chat received", data)
$(this.$refs.chatBox).append('
<div>
${data}
</div>
')
})
server:
socket.on('chat', function (id, msg) {
console.log("id:", id, 'message:', msg)
socket.broadcast.emit('chat', msg);
// io.emit('chat', msg)
})
Questo ora ascolterà "chat"
e potrò disattivarlo utilizzando socket.off("chat")
Ora faccio qualcosa di simile ma con una stanza:
client:
// to join
socket.emit('waiting room', socket.id)
// to message
socket.emit('waiting room chat', { msg: this.$refs.waiting_input.value })
server:
socket.on('waiting room', function (id) {
console.log("socket has joined the waiting room", id);
socket.join("waiting room")
})
socket.on("waiting room chat", function(payload) {
console.log("waiting room chat:", payload.msg)
// io.to("waiting room").emit('waiting room', payload.msg)
socket.broadcast.to("waiting room").emit('waiting room', payload.msg)
})
Ora se invio un messaggio a waiting room chat
ma un socket non è entrato nella stanza, non lo riceverà. Ma quale vantaggio ha il secondo metodo rispetto al primo?