Управление сеансами в Node.js?

Каков наилучший способ управления переменными сеанса в Node.js? Есть ли библиотека?

Ответ 1

Вы можете сделать это очень легко, используя:

  • Подключиться: http://senchalabs.github.com/connect/

    Подключения похожи на Rack in Ruby. Это дает вам дополнительный слой, где вы можете "играть" с аутентификацией, сеансами, кукисами и т.д.

Другим вариантом является использование фреймворков:

  • Express.js: http://expressjs.com/

    Кажется, это самая используемая структура node.js. Это похоже на Sinatra для Ruby и работает поверх подключения.

  • Гедди: http://geddyjs.org/

    Если вы хотите сделать более сложные WebApps, Geddy - это тот, который вы выберете. Это похоже на Rails для Ruby.

Ответ 2

nodejs предоставляет базовый http API. http является апатридом, а идеи сессий и переменных сеанса существуют в структуре/протоколах, построенных поверх http. http://en.wikipedia.org/wiki/Session_%28computer_science%29

Взгляните на http://geddyjs.org/ или http://expressjs.com/ в качестве примеров веб-фреймворков, построенных с помощью node, которые предоставляют сеансы.

Ответ 3

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

Я бы также попытался разработать ваш сайт как приложение, а не веб-сайт, или рассматривать ваш сайт как приложение, использовать замечательные функции html5, такие как локальные хранилища/локальные базы данных, и сократить объем трафика между сервером и клиентских машин.

Если все остальное терпит неудачу (или сайт мал), то что заставляет вас писать собственный класс сеанса. Не так сложно. Особенно, если это относится к типу памяти. Поместите некоторую таймерную логику на сеансы тайм-аута, и там вы идете. Проклятый динамический язык, такой как JavaScript, должен быть cinch.

Структура должна быть словарем с ключом, являющимся сеансом, а значение - объектом, содержащим сведения о последней связи и возможностях (чтобы разрешить доступ к определенным функциям). Добавьте функцию развертки, чтобы очистить старые сеансы, которые были отключены. и бинго. Основная служба сеанса. базовая проверка на "это ключ сеанса в списке... да/нет... получить детали"... и я думаю, что это... или есть какая-то функция, которой я не хватает.

Я лично избегал бы любого стороннего инструмента там как можно дольше. Пески смены времени очень быстро, и вы всегда можете зависеть от кода, разработанного вами самим.

Ответ 4

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

Mongo https://github.com/mikkel/express-session-mongo - Обязательно используйте параметр "native_parser: false"

Redis https://github.com/visionmedia/connect-redis - Очень хорошо, но если вы еще не используете redis для pub/sub или хранилище, это может быть не идеальным.

Заметьте, есть другие варианты - это зависит от вашего проекта. Ищите что-то, что вы можете использовать, используя свой существующий стек технологий.

Ответ 5

Если вы ищете серьезную веб-разработку с помощью Node.js, используйте Экспресс-фреймворк; он поддерживает сеансы.

Создайте проект Express с параметрами --sessions.

$ express --sessions

Чтобы установить Express:

$ npm install express -g