我的问候。我想询问是否可以在Node.js中管理会话以及如何管理会话。我的意思是Node.js,而不是表达。
关于app。我使用静态节点服务器+ websocket服务器,在前端我有一个简单的SPA。只有一个时刻让我想到会话:当用户刷新页面他收到新的套接字。 所以我必须加强"登录状态"与会话,而不是套接字。
感谢。
更新:我找到了npm模块" msession",这看起来很简单,应该可以胜任。但现在有一个问题。我必须从套接字获取请求和响应对象。
我设法得到这样的请求:
let req = socket.upgradeReq;
我已尝试使用此变体进行回复,但正如预期的那样,它没有起作用:
let res = {writeHead: {}};
有关响应对象的任何建议吗?
答案 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