0%

socket.io 事件

Object.keys(socket.server.sockets.sockets)是当前连接上 socket 的所有客户端的socket.Id
Object.keys(socket.server.sockets.connected)也是
Object.keys(socket.server.eio.clients)

socket.on(‘login’, (socket) => {
socketId = socket.id//当前连接的 socketId
})

socket.id 就是当前客户端的 socketId

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//发送给当前请求的客户端
socket.emit('message', "this is a test");

// 发送给除了当前请求的所有的客户端
socket.broadcast.emit('message', "this is a test");

// 发送给所有的客户端包括请求的客户端
io.sockets.emit('message', "this is a test");

// 发送给在game房间(Room)的除啦当前请求的所有客户端
socket.broadcast.to('game').emit('message', 'nice game');

//发送给在game房间(Room)的包括请求客户端的所有的客户端
io.sockets.in('game').emit('message', 'cool game');

//发送给socketid(客户端标识)指定客户端

  • 1.0版本前使用下面

    1
    io.sockets.socket(socketid).emit('message', 'for your eyes only');
  • 1.0版本后使用下面

    1
    io.sockets.connected[socket.id].emit('message','for your eyes only' );
  • 加入房间

    1
    2
    3
    4
    5
    socket.on('joinRoom', (data) => {
    console.log(`joinRoom success`)
    socket.join(`room${data.roomId}`);
    // socket.in(`room${data.roomId}`).emit('userJoinRoom', `${data.userId} join in the Room${data.roomId}`);//发送给房内(包括自己)一个事件
    })
  • 离开房间

    1
    2
    3
    4
    5
    socket.on('leaveRoom', (data) => {
    console.log(`leaveRoom success`)
    socket.leave(`room${data.roomId}`);
    // socket.to(`room${data.roomId}`).emit('userLeaveRoom', `${data.userId} leave in the Room${data.roomId}`)//发送给房内(不包括自己)一个事件
    })