java - Node.js 有状态服务器

标签 java javascript node.js session stateful

总的来说,我对 Node.js 和服务器端 JS 很陌生。

我来自 Java EE,习惯于使用有状态对象(不是 EJB,我使用 CDI),例如 MVC。 我的目标是保留一些与例如相关的数据。一个 session 。

Java EE 中的 CDI 知道以下状态范围:

  • 应用程序范围(= 与单例模式相同)
  • session 范围(状态在用户的 session 生命周期内保留,例如登录的用户)
  • 对话范围(为已识别的对话保留状态,例如购物车)
  • Flash 范围(状态保留在两个请求之间)

如何使用 Node 来使用数据库,仅使用有状态对象来完成所有这些工作?

最佳答案

您需要类似 connect 的内容为您跟踪 session 状态,因为这是这些范围中最不重要的。完成后,您可以执行以下操作。

  • 应用程序范围(=与单例模式相同)
    • 在 HTTP 服务器实例上设置属性:myServer.totalRequestsServed = 0
    • 或者您可以使用进程范围的全局:global.totalRequestsServed = 0
  • session 范围(状态在用户的 session 生命周期内保留,例如登录的用户)
    • 为此使用连接 session 中间件:req.session.user = myUser
  • 对话范围(为已识别的对话保留状态,例如购物车)
    • 我不太清楚“对话范围”的含义,但我会将其粘贴在 session 用户或共享哈希对象中。 session.user.shoppingCart = {}
  • Flash 范围(状态保留在两个请求之间)
    • 为此使用 session 或请求。 npm 中有现有的模块可以为您提供帮助,例如 req.flash("Welcome!")。请参阅connect-flash例如。

关于java - Node.js 有状态服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21970880/

相关文章:

java - 在路径上标记位图 - Android

Java 被这种语法搞糊涂了

javascript - 有没有办法让wysithtml5的链接编辑器让用户向href标签添加他们喜欢的任何内容?

javascript - Jquery 追加在函数之外不起作用

node.js - Firebase 的云函数 : accessing BigQuery not working

javascript - Node JS从mongodb返回数据时出错

javascript - 处理数据并记录来自请求的人

java - shell 脚本中的 Maven 命令

java - Java-API 的实际 JSON 序列化基准

javascript - 使用 axios 和 express 时的 'Access-Control-Allow-Origin'