Динамические пространства имён в socket.io

Пытаюсь реализовать динамические пространства в socket.io, но сталкиваюсь с различными багами. В интернете по этому вопросу много вопросов, но мало нормальных ответов. Вот моя реализация:
app.get '/:namespace', (req, res) ->
  namespace = '/' + req.params.namespace

  # Is already created namespace?
  namespaceExist = io.sockets.manager.namespaces[namespace]?

  # Send responce
  res.json yes

  return if namespaceExist

  # Socket.io
  io.of(namespace).on 'connection', (socket) ->
    # do something 

Клиент:
$.getJSON server, {}, (yes) =>
     socket = io.connect server
     # do something  

Но столкнулся с багом: если подключится к серверу, затем перезапустить сервер (подождать пока клиент сделает реконнект) и попыпаться заново подключится — ничего не выходит.

Может кто-нибудь знает как нравильно организовать динамические простраранства имён?
  • Вопрос задан
  • 4484 просмотра
Решения вопроса 1
No_Time
@No_Time
1) Что мешает использовать комнаты?
2) Можно так:
io.sockets.on('connection', function(socket){

        var namespace = '/' + socket.handshake.namespace.toLowerCase();
        
        if (!io.namespaces[namespace]){

            io.of(namespace).on('connection', function(socket){

            });
        }
});


Имя нэимспэйса передавайте в ф-цию авторизации и соответственно сохраняйте в хэндшейк.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
summer Ярославль
от 100 000 до 140 000 ₽
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽