Quelle est la meilleure façon de gérer les variables de session dans Node.js ? Existe-t-il une bibliothèque ?
Réponses
Trop de publicités?Vous pouvez le faire très facilement en utilisant :
-
Connectez-vous : http://senchalabs.github.com/connect/
Connects est comme Rack en Ruby. Il vous donne une couche supplémentaire où vous pouvez "jouer" avec l'authentification, les sessions, les cookies, entre autres.
L'autre option consiste à utiliser des cadres :
-
Express.js : http://expressjs.com/
Il semble que ce soit le framework node.js le plus utilisé. C'est comme Sinatra pour Ruby et il fonctionne au-dessus de connect.
-
Geddy : http://geddyjs.org/
Si vous voulez faire des WebApps plus complexes, c'est Geddy qu'il faut choisir. C'est comme Rails pour Ruby.
Nodejs fournit une API http de base. http est sans état, et les idées de sessions et de variables de session existent dans les cadres/protocoles construits au-dessus de http. http://en.wikipedia.org/wiki/Session_%28computer_science%29
Jetez un coup d'œil à http://geddyjs.org/ o http://expressjs.com/ comme exemples de cadres web construits avec node qui fournissent des sessions.
Il suffit de le décharger sur memcache ou un autre mécanisme de mise en cache. Je ne chargerais pas vos serveurs avec ce genre de choses. Quel est l'intérêt d'un serveur web super léger qui doit se souvenir de choses.
J'essaierais également de développer votre site comme une application et non comme un site web, ou de traiter votre site web comme une application, d'utiliser les merveilleuses fonctionnalités de html5 comme le stockage local/les bases de données locales et de réduire la quantité de trafic entre le serveur et les machines clientes.
Si tout le reste échoue (ou si le site est petit), qu'est-ce qui vous empêche d'écrire votre propre classe de session. Ce n'est pas si difficile. Surtout si c'est une chose de type mémoire. Mettez un peu de logique de temporisation pour arrêter les sessions et voilà. Dans un langage dynamique tel que JavaScript, ce devrait être un jeu d'enfant.
La structure doit être un dictionnaire dont la clé est la session et la valeur un objet contenant les détails de la dernière communication et les capacités (pour permettre l'accès à certaines fonctionnalités). Ajouter une fonction de balayage pour effacer les anciennes sessions qui ont expiré. et bingo. Un service de session de base. une vérification de base sur "la clé de la session est-elle dans la liste... oui/non... obtenir des détails"... et je pense que c'est tout.... ou y a-t-il une fonctionnalité que je manque.
Personnellement, j'éviterais tout outil tiers aussi longtemps que possible. Les sables du temps changent très rapidement et vous pouvez toujours compter sur un code développé par vous-même.
La réponse de Donald est bonne - une fois que vous entrez dans le modèle en oignon du middleware de connexion, vous devez prendre une décision sur le type de magasin de session à utiliser. Le magasin par défaut dans express est un MemoryStore, et n'est pas prévu pour une utilisation en production. Voici quelques-uns de vos choix :
Mongo https://github.com/mikkel/express-session-mongo - Veillez à utiliser l'option 'native_parser:false'.
Redis https://github.com/visionmedia/connect-redis - Très bien, mais si vous n'utilisez pas déjà redis pour le pub/sub ou le stockage, ce n'est peut-être pas l'idéal.
Notez qu'il existe d'autres choix - cela dépend de votre projet. Recherchez quelque chose que vous pouvez introduire en tirant parti de votre pile technologique existante.
Si vous cherchez un développement web sérieux utilisant Node.js, utilisez Cadre express ; il prend en charge les sessions.
Créez le projet Express avec les options --sessions.
$ express --sessions
Pour installer Express :
$ npm install express -g