Ich bin socket.io auf Knoten js und mein Ziel ist es, Raum zu schaffen und Raumereignisse an den Server zu verbinden und dann an diejenigen, die dem Raum beigetreten. Ich erschaffe erfolgreich das Zimmer, das ich denke, aber wenn ich irgendetwas mit .to()
schicke, funktioniert es nicht.socket.io Zimmer funktionieren nicht
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);
});
});