1

我很难找到 node.js 中 TLS 模块的“newSession”和“resumeSession”事件的文档和示例。
对此方向的任何链接或帮助表示赞赏。我需要更多地了解这些事件,以便在 node.js 中实现抗故障 tls 连接。

4

1 回答 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 回答