Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript socket.io房间不';行不通_Javascript_Node.js_Socket.io - Fatal编程技术网

Javascript socket.io房间不';行不通

Javascript socket.io房间不';行不通,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我是node js上的socket.io,我的目标是将createroom和joinroom事件发送到服务器,然后向加入该房间的人广播。我想我成功地创建了这个房间,但是当我发送任何带有.to()的东西时,它就不起作用了 index.html <html> <head> <script src="/socket.io/socket.io.js"></script> </head> <body> <la

我是node js上的socket.io,我的目标是将createroom和joinroom事件发送到服务器,然后向加入该房间的人广播。我想我成功地创建了这个房间,但是当我发送任何带有
.to()
的东西时,它就不起作用了

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>
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);
    });
});

如果要向特定房间中的人发送特定消息,请执行以下操作:

io.sockets.in(room).emit('something', something);
或者,如果要向特定套接字发射某些内容,可以执行以下操作:

io.to(socket).emit('something', something);

如果要向特定房间中的人发送特定消息,请执行以下操作:

io.sockets.in(room).emit('something', something);
或者,如果要向特定套接字发射某些内容,可以执行以下操作:

io.to(socket).emit('something', something);