2017-01-31 13 views
0

私はノードjsのsocket.ioです。私の目標は、ルームを作成し、ルームイベントをサーバーに参加させ、ルームに参加した人にブロードキャストすることです。私は思った通りの部屋をつくっていますが、.to()で何かを送ると動作しません。socket.ioのルームは動作しません

index.htmlを

<html> 

<head> 
    <script src="/socket.io/socket.io.js"></script> 
</head> 

<body> 
    <label for="joinRoom"> Join room</label> 
    <form id="joinRoom"> 
     <input id="room" /><button>Send</button> 
    </form> 
    <label for="createRoom"> Create room</label> 
    <form id="createRoom"> 
     <input id="players" /><button>Send</button> 
    </form> 
    <script src="/client.js"></script> 
</body> 

</html> 

client.js

const socket = io(); 

socket.on('test', (data) => console.log(data)); 

document.getElementById('joinRoom').onsubmit =() => { 
    socket.emit('joinRoom', document.getElementById('room').val()); 
    return false; 
}; 

socket.on('roomCreated', (id) => { 
    console.log(id); 
    // 
}); 

document.getElementById('createRoom').onsubmit =() => { 
    socket.emit('createRoom', document.getElementById('players').value); 
    return false; 
}; 

server.js

const express = require('express'); 
const app = express(); 
const server = require('http').createServer(app); 
const io = require('socket.io').listen(server); 

app.use(express.static('public')); 

server.listen(3000,() => { 
    console.log('listening...'); 
}); 

let currentRoomID = 0; 
const rooms = []; 

io.on('connection', (socket) => { 
    function joinRoom(room) { 
     socket.join(room.toString()); 
    } 
    socket.on('createRoom',() => { 
     const roomID = currentRoomID++; 
     rooms[roomID] = `foo ${roomID}`; 
     joinRoom(roomID, socket.id); 
     io.sockets.emit('roomCreated', roomID); 
     socket.to(roomID.toString()).emit('test', rooms[roomID]); 
    }); 
    socket.on('joinRoom', (room) => { 
     joinRoom(room, socket.id); 
    }); 
}); 

答えて

1

あなたは特定の部屋あなたの人々に特定のメッセージを発するようにしたい場合コールドド:

io.sockets.in(room).emit('something', something); 

それとも、特定のソケットに何かを発するようにしたい場合は、あなたができる:

io.to(socket).emit('something', something); 
関連する問題