在Node.js中管理会话?

时间:2010-09-17 16:14:14

标签: node.js

在Node.js中管理会话变量的最佳方法是什么?有没有图书馆?

5 个答案:

答案 0 :(得分:95)

您可以使用以下方法轻松完成:

其他选择是使用框架:

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

    它似乎是最常用的node.js框架。就像Sinatra for Ruby并且运行在连接之上。

  • Geddy:http://geddyjs.org/

    如果您想要做更复杂的WebApp,Geddy就是您选择的。就像Rails for Ruby。

答案 1 :(得分:13)

nodejs提供了一个基本的http API。 http是无状态的,会话和会话变量的思想存在于构建于http之上的框架/协议中。 http://en.wikipedia.org/wiki/Session_%28computer_science%29

请查看http://geddyjs.org/http://expressjs.com/作为使用提供会话的节点构建的Web框架的示例。

答案 2 :(得分:12)

将其卸载到memcache或其他一些缓存机制。我不会用这种东西给你的服务器增加负担。超级精益网络服务器必须记住内容的重点是什么。

我还会尝试开发您的网站作为应用程序而不是网站,或将您的网站视为应用程序,使用html5的精彩功能,如本地存储/本地数据库,并减少服务器之间的流量和客户端机器。

如果所有其他方法都失败了(或者网站很小)那么什么阻止你编写自己的会话类。没那么难。特别是如果它是一个内存类型的东西。放一些计时器逻辑来超时会话,然后你去。该死的动态语言如JavaScript,应该是一个很好的。

结构应该是一个字典,其中键是会话,而值是包含上次通信和功能详细信息的对象(以启用对某些功能的访问)。添加扫描功能以清除已超时的旧会话。和宾果游戏。基本会话服务。基本检查“列表中的会话密钥...是/否...获取详细信息”......我认为这就是......或者是否有一些我缺少的功能。

我个人会尽可能避免使用任何第三方工具。时间之沙非常快,您可以随时依赖自己开发的代码。

答案 3 :(得分:6)

唐纳德的答案很好 - 一旦你进入连接中间件的洋葱模式,你必须决定使用什么类型的会话存储。 express中的默认值是MemoryStore,不适合生产使用。以下是您的一些选择:

Mongo https://github.com/mikkel/express-session-mongo - 请务必使用“native_parser:false”选项

Redis https://github.com/visionmedia/connect-redis - 非常好,但如果你还没有将redis用于pub / sub或存储,那可能不太理想。

注意,还有其他选择 - 这取决于您的项目。寻找可以利用现有技术堆栈引入的内容。

答案 4 :(得分:2)

如果您正在寻找使用Node.js进行认真的Web开发,请使用Express framework;它支持会话。

使用--sessions选项创建Express项目。

$ express --sessions

安装Express:

$ npm install express -g