Socket.io: смена комнат заставляет всех пользователей менять комнаты - PullRequest
0 голосов
/ 12 декабря 2018

Я немного новичок в Socket.io.Но я реализовал чат, где пользователи могут менять комнаты.Проблема в том, что когда пользователь меняет комнаты, все остальные пользователи тоже меняются на ту же комнату.Я не уверен, что я делаю неправильно.Может кто-нибудь объяснить, что не так с моим кодом?Чат используется в приложении Angular.Чат размещен в Экспресс.

let express = require('express');
let app = express();

let http = require('http');
let server = http.Server(app);
let usercount = 0;
let socketIO = require('socket.io');
let io = socketIO(server);

const port = process.env.PORT || 3000;

io.on('connection', (socket) => {
  usercount++;
  console.log(usercount.toString());

  socket.on('join-main-chat', (message) => {
    socket.join('main room');
    io.to('main room').emit('new-message', usercount.toString());
  });

  socket.on('change-room', (message) => {
    newRoom = message;
    socket.leaveAll();
    socket.join(newRoom);
    console.log("new room might be: " + message);
    socket.join(message);
  });

  socket.on('new-message', (message) => {
    console.log(message);
    io.emit('new-message', message);
    io.emit('get-count', usercount.toString());
  });

  socket.on('left-message', (message) => {
    usercount--;
    console.log(usercount.toString());
    io.emit('new-message', message);
    io.emit('new-message', usercount.toString());
    io.emit('get-count', usercount.toString());
  });
});


server.listen(port, () => {
  console.log(`started on port: ${port}`);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...