Node.js会话

时间:2015-11-12 08:01:28

标签: node.js session

我的问候。我想询问是否可以在Node.js中管理会话以及如何管理会话。我的意思是Node.js,而不是表达。

关于app。我使用静态节点服务器+ websocket服务器,在前端我有一个简单的SPA。只有一个时刻让我想到会话:当用户刷新页面他收到新的套接字。 所以我必须加强"登录状态"与会话,而不是套接字。

感谢。

更新:我找到了npm模块" msession",这看起来很简单,应该可以胜任。但现在有一个问题。我必须从套接字获取请求和响应对象。

我设法得到这样的请求:

let req = socket.upgradeReq;

我已尝试使用此变体进行回复,但正如预期的那样,它没有起作用:

let res = {writeHead: {}};

有关响应对象的任何建议吗?

2 个答案:

答案 0 :(得分:0)

也许这个插件可以帮助您node-session,或者这个node-client-sessions

答案 1 :(得分:0)

Actually this blog-post made my day.

To conclude. Here's what I've recieved as result:

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")

So, it's working sollution of the sockets based application, that has static file server and sessions. Maybe someone will find this usefull.

Sollution requires:

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