【问题标题】:Node.js sessionsNode.js 会话
【发布时间】:2015-11-12 08:01:28
【问题描述】:

是否可以在 Node.js 中管理会话以及如何管理?我的意思是 Node.js,而不是 Express.js。

关于应用程序。我使用静态 Node.js 服务器和 WebSocket 服务器。在前端我有一个简单的SPA。只有一个时刻让我想到了会话:当用户刷新页面时,他/她会收到一个新的套接字。

所以我必须将“登录状态”与会话绑定,而不是套接字。


我找到了 npm 模块“msession”。这看起来很简单,应该可以完成这项工作。但是现在有一个问题。我必须从套接字中获取请求和响应对象。

我设法通过这种方式得到的请求:

let req = socket.upgradeReq;

我已经尝试过这个变体来响应,但正如预期的那样,它不起作用:

let res = {writeHead: {}};

如何处理响应对象?

【问题讨论】:

    标签: node.js session


    【解决方案1】:

    也许这个插件会帮助你node-session,或者这个node-client-sessions

    【讨论】:

    • Node-session 看起来正是我所需要的,但不知为何在安装过程中出现错误。节点客户端会话是面向快递的。
    • 你遇到了什么错误? npm install node-session 效果很好。
    • Build failed npm WARN install:deasync deasync@0.0.10 install: node ./build.js npm WARN install:deasync Exit status 1 无论如何我已经找到了如何在纯节点环境中使用节点客户端会话。
    【解决方案2】:

    实际上,blogpost 让我很开心。

    总之,以下是我收到的结果:

    const http = require('http');
    const staticServer = require('node-static');
    const WebSocketServer = new require('ws');
    const session = require('sesh/lib/core').magicSession();
    
    // WebSocket server
    const webSocketServer = new WebSocketServer.Server({port: 8081});
    
    // Create a node-static server instance to serve the './public' folder
    const fileFolder = new staticServer.Server('./public');
    
    http.createServer(function (request, response) {
      GLOBAL.session = request.session;
      request.addListener('end', function () {
        fileFolder.serve(request, response);
      }).resume();
    
    }).listen(1337);
    
    webSocketServer.on('connection', function(ws) {
      if( typeof(ws.session) === "undefined")
        ws.session = GLOBAL.session;
      /* Any logic here */
    });
    
    console.log("Static server created")
    

    因此,它是基于套接字的应用程序的有效解决方案,具有静态文件服务器和会话。

    解决方案需要:

    npm install --save node-static && npm install --save ws && npm install --save sesh
    

    【讨论】:

      猜你喜欢
      • 2012-02-08
      • 2014-01-10
      • 2012-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-18
      • 2013-04-16
      相关资源
      最近更新 更多