@Azperin
Дилетант

СокетИО и большое количество событий?

Встал такой вопрос, в подавляющем большинстве примеров по сокетио используется следующая конструкция:

io = require('socket.io').listen(httpsServer);
io.on('connection', function(socket) {
  socket.on('listener1', function(e) {
    //code
  }),
 socket.on('listener2', function(e) {
    //code
  }),
  ...etc
});


Вопрос в следующем, является ли правильным такое написание кода ? Ведь при подключении 100 человек нода создаст N * 100 прослушек ивентов. Как выходить из такой ситуации ?
  • Вопрос задан
  • 294 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Abcdefgk
Да нет никакой "ситуации". При подключении 100 клиентов будет создано 100 объектов-сокетов - каждый с уникальным ID. А "слушатели" событий есть не просят, они их только слушают и, при поступлении, отдают обработчикам - это общая для всех коннектов абстракция.
Ответ написан
@de1m
По-моему пример как-то странно выглядит.
"socket.on" происходит при каком-то событии, а не при появление нового пользователя.
То есть к примеру клиент (один или тысяча) говорит
socket.emit('getUserInfo')
А на стороне сервера
io = require('socket.io').listen(httpsServer);
io.on('connection', function(socket) {
  socket.on('getUserInfo', function(e) {
    //code
     ...
    socket.emit('sendUserInfo', data)
  })
});

То есть это не зависит от количества клиентов. Хотя да, будут висеть открытыми TCP соединения с каждым клиентом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы