Я кодирую игровой сервер HTML5.Сервер содержит список совпадений, и когда пользователь присоединяется к одному из совпадений, он может видеть ход игры, а также общаться с другими пользователями и т. Д.
Когда пользователь присоединяется к совпадению,сервер ищет в своем объекте сеанса строку «идентификатор пользователя».Строка userid ссылается на объект пользователя.Если он не найден, создается новый объект пользователя, и к объекту сеанса добавляется строка 'userid'.
Это позволяет пользователю подключаться к нескольким играм с использованием нескольких вкладок / окон, при этом по-прежнему отображаетсято же имя пользователя, отображать картинку в каждом окне.
Теперь проблема заключается в том, что один и тот же пользователь подключался к одному и тому же совпадению более одного раза.Если у пользователя есть два окна, подключенных к одной и той же игре, я хочу, чтобы они видели в обоих окнах одну и ту же вещь - что-то вроде чата Facebook.
В настоящее время, когда пользователь подключается к матчу, появляется новый 'объект соединения создан, и на этом объекте я обрабатываю события сокетов и т. д.
То, что я надеялся сделать, - это обрабатывать события нескольких сокетов, используя одну и ту же функцию-обработчик событий.Единственное, что меня останавливает, это то, что события сокета не имеют аргумента «владелец».Без ссылки на сокет, получающий сообщение, я не могу транслировать сообщение на все сокеты, кроме того, которое получило сообщение.
Комнаты SocketIO также не соответствуют моим требованиям, потому что нет событий длясообщения, полученные по каналу.
Вместо этого я вынужден учитывать наличие как объекта подключения, так и объекта участника, где у каждого участника есть несколько подключений.Мне это кажется очень раздутым.
Другой вариант - попытаться заставить себя писать, используя код для спагетти, использовать замыкания и т. Д.
Действительно нужен совет от кого-то, кто был ваналогичная ситуация.