Nodejs: как лучше всего координировать сеансы и сокеты

Задний план:

У нас есть рабочее веб-приложение, которое использует сокеты (socket.io) для подключения нескольких клиентов к одному серверу.

На сервере есть объект, который по существу является списком соединений. Когда клиент сначала подключается, он отправляет основную информацию, и сервер хранит ее так:

connections[socket.id] = { "name": name, "id": id, etc. };

Наличие списка подключений, организованных с помощью идентификатора сокета, позволяет легко обрабатывать разъединение с уведомлениями других клиентов и т.д., И этот простой дизайн отлично подходит для базового тестирования и легкого использования. Однако, продвигаясь к реальному использованию за пределами закрытой сети, конечно, необходимо будет поддерживать надлежащие учетные записи пользователей и требовать от пользователей входа в систему и проверки подлинности.

Вопрос:

Мы используем экспресс (и довольно новые на нем), поэтому есть множество примеров использования session/cookie, чтобы получить сеанс и ограничить доступ к определенным страницам в зависимости от req.session.user. Нет проблем с получением некоторых базовых вещей там. Но на данный момент я не понимаю, есть ли хороший ("стандартный" шаблон дизайна), чтобы связать эту информацию сессии с сокетом. Например, в нашем закрытом приложении пользователь вводит свое имя пользователя в простом диалоговом окне предупреждения, и он получает доступ к серверу сразу же после создания сокета, что позволяет заполнять запись соединений [] выше.

Но теперь имя пользователя /pw вводится на странице входа в систему до того, как фактически загружена страница приложения (ограниченная), и мы хотели бы использовать имя пользователя, прошедшее проверку сеанса, например, чтобы заполнить данные сокета (выше), которые будут созданы для этого пользователя. Надеюсь, это имеет смысл.

Я могу себе представить, как это можно сделать, но в лучшем случае они кажутся неэлегантными, грозными и склонными к ошибкам в худшем случае. Похоже, что в этой ситуации должен быть общий шаблон проектирования. Я искал здесь без успеха до сих пор, может ли кто-нибудь просветить, пожалуйста?

1 ответ

https://github.com/b3n0n/****** - это своего рода ненавязчивый фрейм с поддержкой php-сервера, использующий google api и сокет для поддержки в реальном времени, помимо вас не нужно обрабатывать более поздние ошибки nodejs из-за статической обработки содержимого, узел для скорости, вам нужно это светло, как перо;)

licensed under cc by-sa 3.0 with attribution.