Динамические пространства имён в 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  

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

Может кто-нибудь знает как нравильно организовать динамические простраранства имён?
  • Вопрос задан
  • 4504 просмотра
Решения вопроса 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){

            });
        }
});


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

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

Похожие вопросы
27 нояб. 2024, в 13:07
10000 руб./за проект
27 нояб. 2024, в 12:53
70000 руб./за проект
27 нояб. 2024, в 12:50
25000 руб./за проект