Я новичок в 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 () инициализация не в том месте в моем интерфейсе