我很难找到 node.js 中 TLS 模块的“newSession”和“resumeSession”事件的文档和示例。
对此方向的任何链接或帮助表示赞赏。我需要更多地了解这些事件,以便在 node.js 中实现抗故障 tls 连接。
问问题
710 次
1 回答
4
这很简单:文档。
sessionData
是一个简单的对象,您可以将其JSON.stringify(sessionData)
保存在 Redis 数据库中。稍后,您可以JSON.parse(sessionData)
再次使用它并恢复会话。
服务器本身只需要会话 ID(由客户端发送)来查找其会话数据(如果可用)。如果服务器找不到一个会话 ID 对应的会话数据,就会开始一个新的会话。
/**
* Module dependencies.
*/
var tls = require("tls");
/**
* Initialize a new TLS server.
*/
var opts = {
cert: fs.readFileSync("./ssl/cert.pem")
, key: fs.readFileSync("./ssl/key.pem")
}
, server = tls.createServer(opts).listen(443);
/**
* TLS session management.
*/
var sessions = {};
server.on("newSession", function(sessionId, sessionData) {
sessions[sessionId.toString("hex")] = sessionData;
});
server.on("resumeSession", function(sessionId, callback) {
sessionId = sessionId.toString("hex");
if(sessionId in sessions)
callback(null, sessions[sessionId]); // resume an existing session
else
callback(null, null); // new session will be started
// you could also emit an error, which wil terminate the connection
// callback(new Error("lol wut"));
});
/**
* Request handler.
*/
server.on("request", function(req, res) {
res.end("Hello World");
});
于 2013-08-04T22:19:44.510 回答