Socket.io получает количество клиентов (двойные подключения) - PullRequest
0 голосов
/ 19 февраля 2019

Я новичок в express.js и socket.io, в основном у меня есть простая страница чата, моя проблема в том, что я не могу заставить эту комнату работать.Я хочу обновлять число клиентов, подключенных к определенной комнате, каждый раз, когда кто-то входит в комнату / покидает ее, вот что я получил:

Клиент:

socket.on("connect", onConnect);
function onConnect() {
  socket.emit("join", "chat-room");
}
socket.on("disconnect", onDisconnect);
function onDisconnect() {
  socket.emit("leave", "chat-room");
}
socket.on("clientsCountResponse", data => {
  this.userCount = data;
});

Сервер:

io.on('connection', (socket) => {

socket.on('join', (room) => {
    socket.join(room, (err) => {
        console.log('New Client joined room')
        io.to(room).emit('clientsCountResponse', io.engine.clientsCount)
    })
})

socket.on('leave', (room) => {
    socket.leave(room, (err) => {
        console.log('Client left room')
        io.to(room).emit('clientsCountResponse', io.engine.clientsCount)
    })
})

socket.on('newMessage', (msg) => {
    socket.broadcast.emit('newMessageResponse', msg)
})

socket.on('isTyping', (data) => {
    socket.broadcast.emit('isTypingResponse', data)
})

socket.on('isNotTyping', () => {
    socket.broadcast.emit('isNotTypingResponse')
})

})

Я не понимаю, когда происходят события, потому что я получаю случайное количество клиентов. Кроме того, события newMessage Typing работают хорошо, хотяя не посылаю их в комнату ???

РЕДАКТИРОВАТЬ : хорошо, так что проблема не имеет ничего общего с логикой, у меня была проблема двойного соединения, которая была вызвана IO () инициализация не в том месте в моем интерфейсе

...