''newSession''和'resumeSession'node.js的

Documentation or examples for ''newSession'' and 'resumeSession' events in TLS module for node.js

本文关键字:js node newSession resumeSession      更新时间:2023-09-26

我很难找到node.js中TLS模块的"newSession"answers"resumeSession"事件的文档和示例。
感谢在这个方向上的任何链接或帮助。为了在节点中实现容错tls连接,我需要了解更多关于这些事件的信息。

这很简单:文档。

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