node.js – 使用快速会话的套接字IO – socket.request.res undefined

我目前正在尝试使用express 4.x和socket io 1.4实现会话管理,引用 this answer.问题是快速会话函数的第二个参数是res(响应)对象,它在我的路由中返回’undefined’.这个问题已经过时了还是我做错了什么?

var http = require('http');

var session = require('express-session')(
{
  saveUninitialized : false,resave:false,secret:'secretstuff',cookie : {
    path : '/'
  }
}
);

var express = require('express');

var app = express();

app.use(session)

var http_server = http.createServer(app);

var io = require('./sockets')(http_server,session);

这是我的sockets.js

var Server = require('socket.io');

module.exports = function(http_server,session)
{
   var io = new Server(http_server);

   io.use(function(socket,next){

      //socket.request.res === undefined
      session(socket.request,socket.request.res,next);
   })

}

这是我得到的地方

Uncaught TypeError: argument res is required

解决方法

在许多来源中提出的sessionMiddleware()函数对我来说很好:

io.use(function(socket,next) {
    sessionMiddleware(socket.request,next);
});

使用web socket.io-client< => socket.io node.js服务器,直到我将socket.io-client-cpp应用程序添加到链中 – 服务器在socket.io-client-cpp连接上崩溃并出现上述错误

06001

在sessionMiddleware()函数中.人们建议完全从中间件中删除socket.request.res:

> https://stackoverflow.com/a/29448630/630169
> https://github.com/socketio/socket.io/issues/2971#issuecomment-326084664

并用{}替换.但是,如果有人仍然需要并使用socket.request.res,可以认为它可以更改为略好的变体:

io.use(function(socket,socket.request.res || {},next);
});

这对我来说很好!

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...