Как лучше всего управлять переменными сеанса в Node.js? Есть ли библиотека?
Ответы:
Вы можете сделать это очень легко, используя:
Подключиться: http://senchalabs.github.com/connect/
Connects похож на Rack in Ruby. Это дает вам дополнительный уровень, где вы можете «поиграть» с аутентификацией, сеансами, файлами cookie и прочим.
Другой вариант - использовать фреймворки:
Express.js: http://expressjs.com/
Кажется, это наиболее часто используемый фреймворк node.js. Походит на Sinatra для Ruby и работает поверх Connect.
Гедди: http://geddyjs.org/
Если вы хотите создавать более сложные веб-приложения, вы выберете Geddy. Это похоже на Rails для Ruby.
Просто выгрузите его в memcache или какой-нибудь другой механизм кеширования. Я бы не стал обременять ваши серверы подобными вещами. Какой смысл в супер-экономичном веб-сервере, который должен все запоминать.
Я бы также попытался разработать ваш сайт как приложение, а не как веб-сайт, или рассматривать ваш веб-сайт как приложение, использовать замечательные функции html5, такие как локальное хранилище / локальные базы данных, и сократить объем трафика между сервером и клиентскими машинами. .
Если все остальное не помогает (или сайт маленький), то что вам мешает написать собственный класс сеанса. Не так уж и сложно. Особенно, если это что-то типа памяти. Добавьте логику таймера для тайм-аута сеансов, и готово. Блин, на динамическом языке, таком как JavaScript, должно быть подпруга.
Структура должна быть словарем с ключом, являющимся сеансом, а значением, являющимся объектом, содержащим детали последней связи и возможности (для обеспечения доступа к определенным функциям). Добавьте функцию развертки, чтобы очистить старые сеансы, срок действия которых истек. и бинго. Базовый сеансовый сервис. базовая проверка на "является ли сеансовый ключ в списке ... да / нет ... получить подробности" ... и я думаю, что это все .... или есть ли какая-то функция, которую мне не хватает.
Лично я бы как можно дольше избегал использования сторонних инструментов. Пески времени меняются очень быстро, и вы всегда можете положиться на код, разработанный вами.
nodejs предоставляет базовый http API. http не имеет состояния, и идеи сеансов и переменных сеанса существуют в рамках / протоколах, построенных поверх http. http://en.wikipedia.org/wiki/Session_%28computer_science%29
Взгляните на http://geddyjs.org/ или http://expressjs.com/ в качестве примеров веб-фреймворков, построенных с помощью узла, обеспечивающего сеансы.
Ответ Дональда хорош - как только вы попадете в луковицу промежуточного программного обеспечения подключения, вам нужно будет принять решение о том, какой тип хранилища сеансов использовать. По умолчанию в Express используется MemoryStore, и он не предназначен для производственного использования. Вот некоторые из вариантов:
Mongo https://github.com/mikkel/express-session-mongo - обязательно используйте параметр native_parser: false
Redis https://github.com/visionmedia/connect-redis - очень хорошо, но если вы еще не используете Redis для публикации / подписки или хранилища, это может быть не идеально.
Обратите внимание, есть и другие варианты - это зависит от вашего проекта. Найдите что-нибудь, что вы можете представить, используя существующий стек технологий.
Если вы ищете серьезную веб-разработку с использованием Node.js, используйте платформу Express ; он поддерживает сеансы.
Создайте проект Express с параметрами --sessions.
$ express --sessions
Чтобы установить Express:
$ npm install express -g
cookie-sessionк своей package.josnработе.