首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >passport.socketio不停地说-到socket.io的连接失败:没有找到会话

passport.socketio不停地说-到socket.io的连接失败:没有找到会话
EN

Stack Overflow用户
提问于 2016-01-23 13:12:50
回答 1查看 1.1K关注 0票数 4

我试图访问像req.user这样的socket.io会话对象,这样我就可以用它做一些事情,我使用passport.socket.io库来完成这个任务。然而,现在的问题是,我一直在获取failed connection to socket.io: No session found.

这是密码

代码语言:javascript
复制
    var express = require('express');
    var session = require('express-session');
    var cookieParser = require('cookie-parser');
    var MongoStore = require('connect-mongo/es5')(session);
    var passport = require('passport');
    var passportSocketIo = require("passport.socketio");

    var config = require('./config/config');


    var sessionStore = new MongoStore({ url: config.database, autoReconnect: true });
    var app = express();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);


    app.use(cookieParser());
    app.use(session({
      resave: true,
      saveUninitialized: true,
      secret: config.secret,
      store: sessionStore
    }));
    app.use(passport.initialize());
    app.use(passport.session());

    io.use(passportSocketIo.authorize({
      cookieParser: cookieParser,       
      key:          express.sid,   // Not really sure how to get this key?
      secret:       config.secret,  
      store:        sessionStore,        
      success:      onAuthorizeSuccess,  
      fail:         onAuthorizeFail,     
    }));

    function onAuthorizeSuccess(data, accept){
      console.log('successful connection to socket.io');
      accept(null, true);  
    }

    function onAuthorizeFail(data, message, error, accept){
      if(error)
        throw new Error(message);
      console.log('failed connection to socket.io:', message);


      accept(null, false);
      if(error)
        accept(new Error(message));
    }

 io.connect('connection', function(socket) {
     console.log("Something Here");
 });


 http.listen(3000);

由于护照未能与socket.io onAuthorizeFail握手,所以它一直在运行这个函数。我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-23 13:54:25

在浏览了express-session文档之后,密钥出现了问题。

我已经改变了这个问题

代码语言:javascript
复制
express.sid => 'connect.sid'

io.use(passportSocketIo.authorize({
   key: 'connect.sid'     
 }));

看起来,在默认情况下,express将提供“connect.sid”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34963874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档