Expressjs+socket.io+express-session

2023-12-09

我的 server.js 中有这段代码。

var app = require('express')(),
        session = require('express-session'),
        cookie = require('cookie'),
        cookieParser = require('cookie-parser'),
        manager = require('./sockets/manager');

var sessionStore = new session.MemoryStore();


app.use(cookieParser('secret'));
app.use(session({
    name: 'sid',
    store: sessionStore,
    secret: 'secret',
    saveUninitialized: true,
    resave: true,
    cookie: {
        path: '/',
        httpOnly: true,
        secure: false,
        maxAge: null
    }
}));

var server = require('http').Server(app).listen(8888),
    io = require('socket.io')(server);

io.use(function(socket, next) {
    var data= socket.request;

    if (data.headers.cookie) {
        data.cookie = cookie.parse(cookieParser.signedCookie(data.headers.cookie, 'secret'));

        console.log('data.cookies ( %s )', JSON.stringify(data.cookie)); 
        // print 'io=id_place', cookies doesn't have sid, why?

        if (data.cookie.sid) {
            data.sid = request.cookie.sid;
            sessionStore.get(request.cookie.sid, function(err, session) {
                request.session = session;
            });
        }
    }

    next();
});

manager.use(io);

控制台日志向我显示了此 cookie request.cookies ( {"io":"lHKSseNH5UrnJisSAAAA"} )。 我刚刚看到了很多使用expressjs 3和socket 0.9的例子,但我有:

"socket.io": "^1.0.6", "express": "~4.5.1", “快速会话”:“~1.6.4”

但它不起作用。

我有什么错误吗?


我已经为您创建了解决方案:在此输入链接描述。正如您所看到的,套接字对象具有握手属性,其中包括带有 cookie 的请求标头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Expressjs+socket.io+express-session 的相关文章

  • Nodejs Express 隐式中间件应用于所有路由?

    我想知道 Express 是否允许我创建一个默认调用的路由中间件 而无需我将其明确放置在 app get arg 列表中 NodeJS 新手 var data title blah So I want to include this in
  • Sails.js - 如何更新嵌套模型

    attributes username type email validated by the ORM required true password type string required true profile firstname s
  • NodeJS CPU 一次飙升至 100%

    我有一个用 NodeJS 编写的 SOCKS5 代理服务器 我正在使用原生net and dgram打开 TCP 和 UDP 套接字的库 它可以正常工作大约 2 天 所有 CPU 的最大利用率约为 30 两天没有重新启动后 一个 CPU 峰
  • Node.js - 生成的进程正在生成错误“execvp():没有这样的文件或目录”

    我有以下代码 旨在生成并分离子进程 它只是同一目录中的另一个 node js 脚本 这是我正在运行的确切代码 var fs require fs var child require child process var out fs open
  • 以异步方式执行 Express res.render

    我有一个 Nodejs 应用程序 其中res renderExpress 方法以阻塞方式花费大约 400 毫秒 我如何处理它以非阻塞方式执行 我的 apache 基准测试需要 12 秒来执行大约 30 个并发请求 我如何以更好的方式实施这一
  • 限制 Axios 请求

    我正在使用 axios 向 Deezer API 发出请求 不幸的是 使用 Deezer 的 API 当您请求艺术家的专辑时 它不包括专辑曲目 因此 我正在通过请求艺术家的专辑 然后对每个专辑执行后续的 axios 请求来解决这个问题 我遇
  • 动态更改温斯顿的日志级别

    我尝试在运行时实现日志级别更改 我一直在关注https github com yannvr Winston dynamic loglevel blob master test https github com yannvr Winston
  • Node 不断恢复到旧版本

    每次我在控制台中重新启动 vagrant 时 它都会询问我的登录详细信息 然后说Now using node v7 10 0 npm v4 2 0 当我做run nvm install node I get v13 11 0 is alre
  • 函数不会等到 Promise 得到解决

    我正在开发一个简单的不和谐机器人 我正在尝试打印有关某个玩家的一些一般数据 我最近了解了 async await 并尝试将其实现到我的代码中 然而 它似乎不起作用 因为当我第一次触发此代码时 它会打印 null 但在后续触发时 它将打印正确
  • 电子应用程序可以播放本地支持的任何视频吗?

    我知道浏览器通常会限制玩家mp4 and webm类型的媒体 但我想知道基于电子的应用程序是否可以运行 MKV 和 AVI 等格式的本地视频 我找不到明确的来源来告诉我什么是可用的 什么是不可用的 Electron 仍然仅限于网络技术 这意
  • 使用 Socket.io 向多个房间发送消息?

    是否可以使用socket io向多个房间发送消息 发送至 1 个房间 io sockets in room emit id 发送到N个房间 io sockets in room1 room2 roomN emit id 是的 可以同时发送到
  • 如何将对象数组传递给jade模板?

    我想将一组对象从 mongodb 传递到客户端 这是物体 var objeto img name name of the file image image jpg url title title of the image caption d
  • 将消息从 AWS Lambda 发布到 AWS IoT

    我正在尝试使用 Nodejs 将消息从 AWS Lamba 发布到 AWS IoT 我已压缩该项目并上传到 AWS IoT 下面是代码片段 var awsIot require aws iot device sdk var device a
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • 当尝试将 formData 发送到 Express js 时,服务器无法识别 multipart/form-data

    我正在尝试将表单数据上传到快递服务器 在我的 Express js 服务器上 我有以下内容 router post uploads id function req res res send req body const title req
  • 构建:找不到“节点”的类型定义文件

    VS 2015 社区版 在家 npm 3 10 Angular 2 我试图在 ASP Net MVC 5 应用程序中获取 Angular2 设置 我开始使用的模板使用旧版本的 Angular 因此我更新了包引用 当我构建时 列表中的第一个错
  • 嵌套异步/等待 Nodejs

    似乎无法弄清楚为什么这对我不起作用 我有一个父函数 它对子加载进程执行 AWAIT LOAD 进程又调用另一个名为 LOADDATA 的 AWAIT 所以基本上是这样的 module exports async function try a
  • Node.js 未处理的“错误”事件

    我编写了一个简单的代码并将其保存在文件 try js 中 var http require http var makeRequest function message var options host localhost port 8080
  • MongoDB中如何通过引用字段进行查询?

    我有两个 Mongo 模式 User id ObjectId name String country ObjectId Reference to schema Country Country id ObjectId name String
  • Node.js - 重载函数

    有没有一种方法可以重载node js中的函数 类似于 noSuchMethod https developer mozilla org en JavaScript Reference Global Objects Object noSuch

随机推荐

  • 使用 WMI 监控驱动器

    我正在尝试监控本地电脑的驱动器 我对两个事件感兴趣 驱动器连接 USB 驱动器 CD ROM 网络驱动器等 和断开连接时 我使用 ManagementOperationObserver 编写了一个快速概念证明 它部分有效 现在 使用下面的代
  • 立方体纹理问题

    我试图制作一个每个面上都有不同纹理的立方体 我现在正面和背面都可以工作 现在我正在尝试制作立方体的右面 但出了问题 因为我完成了正确的脸 但纹理显示错误 就像拉伸和切碎 我的代码中有一些不好的东西 我不知道是什么 这是我的代码 public
  • 从图库中随机查找一张图片

    我正在开发一个需要获取随机图片来自 Android 设备上的图库 问题是我只能找到与图库交互的方法 允许用户选择他们想要的图片 有人知道我应该做什么才能使这项工作成功吗 Java 代码会很有帮助 我可能会用this方法 然后将 ID 放入数
  • 在 .NET 6 Minimal API 中使用 IEnumerable<> 和 IFormFileCollection

    问题是 我有一个从 URL 连接 pdf 的 API 它在 NET 5 中工作 但是当开始迁移到 NET 6 时 使用 IEnumerable IFormFile 和 IFormFileCollection 只接受请求 applicatio
  • 在 Qt C++ 中的自定义项目委托上绘制文本时的性能问题

    Goal 创建一个项目委托 其中包含要使用的自定义文本内容QListView Problem 绘制文本QPainter在重新实施paint 的方法QAbstractItemDelegate的子类明显比绘制形状和像素图慢 将基类更改为QSty
  • 将数据数组渲染为分页组件

    我是 React 新手 所以如果我的术语有误 请原谅我 我想创建一种对组件数组进行分页的方法 为此 我已按每页所需的项目数量对数组进行了切片 并将每个页面存储到一个数组中 例如 const limit 4 const numPages 20
  • 什么是聚合根?

    我正在尝试了解如何正确使用存储库模式 聚合根的核心概念不断出现 当在网络和 Stack Overflow 上搜索有关什么是聚合根的帮助时 我不断找到有关它们的讨论以及指向应该包含基本定义的页面的死链接 在存储库模式的上下文中 什么是聚合根
  • 为什么返回泛型 Map 的代码在分配给泛型 Map 时会生成编译器警告?

    我有一个带有此签名的方法 protected final Map
  • 在应用程序中保存数据

    我已经提出申请了 这是一个显示您按下时间的按钮 每次我 杀死 应用程序时 计时器都会再次从 0 开始 自然地 我怎样才能让应用程序保存按下按钮的时间 这样当应用程序被杀死 然后你打开它时 计时器就在你停止的时候 我有一些关于如何完成此操作的
  • 在方向锁定开启的情况下强制相机横向查看

    我正在开发一款增强现实游戏 当设备的方向锁定打开时 我遇到了相机视图方向的问题 我正在使用此代码在视图内加载相机视图 AVCaptureSession session AVCaptureSession alloc init AVCaptur
  • 未封装意味着不可更改?

    我遇到了这条线有效的C public 意味着未封装 实际上 未封装意味着不可更改 尤其是 对于广泛使用的类 然而广泛使用的类最需要封装 因为 他们是能够从用更好的实现替代一种实现的能力中获益最多的人 一 作者所说的 公开意味着未封装 实际上
  • 如何在Java中读取application.yml文件

    我写了一个电子邮件程序 但我必须更改一些配置 所以在我的项目中我需要知道如何从 yaml 中读取我的 loginUrl 我的代码如下 userNotificationEmail setIsActive F userNotificationE
  • 如何将东部时区转换为中部时区

    我的时间位于东部时区 但我想将其调整为中部时区 两个时区均位于美国 我以前从来没有这样做过 我不知道如何转换它 请帮我 这是一种可能的方法 dt new DateTime 2011 02 22 16 15 20 new DateTimeZo
  • R:从循环中打印单独的迭代?

    我正在使用 R 编程语言 通常 我从循环中打印迭代 这有助于我跟踪事情 例如 my list list for i in 1 1000 tryCatch frame i rnorm 1 1 1 my list i frame i ifels
  • 为什么有些 Docker 镜像没有定义 VOLUME?

    我刚刚开始接触 Docker 如果我的问题对你来说太傻了 请原谅我 我看到一些图像 例如nginx 没有任何VOLUME定义而有些图像像mysql has VOLUME在他们的 Dockerfile 中定义 当没有定义卷时如何管理数据或文件
  • 在symfony2中引用静态模板

    我想将 Angular 与 symfony2 一起使用 为此 应该可以从像这样的引用加载模板 div div 载荷是角度的部分 我们只需提供模板的路径即可 模板不应该用树枝渲染 这可以用 symfony 实现吗 简单地制作一个没有树枝标签的
  • PDF 中的统一码

    我的程序根据要求生成相对简单的 PDF 文档 但我在处理 unicode 字符 如汉字或奇怪的数学符号 时遇到问题 要在 PDF 中写入普通字符串 请将其放在括号中 something 还可以选择使用八进制代码转义字符 527 但这最多只能
  • 使用PHP代码从多维数组获取数据

    我正在尝试获取这些数据 label gt For Rent来自多维数组 这是我的数组 Array listing id gt 0 fields gt Array 1 gt Property House 7 2 gt 30 4 gt sdfa
  • 停止预定的 JavaScript 执行

    我有一个函数 在其中定义了很多 setTimeout 函数 当用户按下按钮时 它就开始执行 我怎样才能取消它 有什么方法可以取消所有超时 假设我有多个没有名字的超时 start timer var timer setTimeout canc
  • Expressjs+socket.io+express-session

    我的 server js 中有这段代码 var app require express session require express session cookie require cookie cookieParser require c