【问题标题】:passport.socketio & client side connect/reconnect only when reboot serverpassport.socketio & 客户端仅在重新启动服务器时连接/重新连接
【发布时间】:2015-11-20 02:09:12
【问题描述】:

我有一个实时应用程序,它可以与 express+passportJS 一起正常工作,并且无需套接字身份验证。 当我添加 passport.socketio 时,我的问题是 只有在我重新启动服务器时才会连接...

我在服务器上有 passportjs 和 passport.socketio,在客户端我有带有 btford.socket-io 的 angularjs:

angular.module('Socket', ['btford.socket-io'])

    .factory('socket',['socketFactory', function(socketFactory){
        var myIoSocket = io.connect("http://192.168.0.7:8080");

        mySocket = socketFactory({
            ioSocket: myIoSocket
        });

        return mySocket;
    }]);

当用户登录时,我正在执行socket.connect();。 这似乎在服务器端没有做任何事情,我没有看到任何日志......

根据教程,这是 passport.socketio 的实现

var io = require('socket.io').listen(app.listen(port));
var passportSocketIo = require("passport.socketio");

io.use(passportSocketIo.authorize({
    cookieParser: cookieParser,
    secret:       'secret',
    store:        sessionStore,
    success:      onAuthorizeSuccess,
    fail:         onAuthorizeFail,
}));

function onAuthorizeSuccess(data, accept){
    log.debug('successful connection to socket.io');
    return accept();
}

function onAuthorizeFail(data, message, error, accept){
    log.debug('unsuccessful connection to socket.io');
    if(error){
        throw new Error(message);
    }

    return accept(new Error(message));
}

奇怪的是,当我重新启动服务器时,我可以看到很多日志消息显示我现在尝试连接的所有套接字实际上都已连接

然后它似乎让用户通过套接字交换并按预期工作。

有人知道会发生什么吗?

【问题讨论】:

    标签: angularjs node.js socket.io passport.js passport.socketio


    【解决方案1】:

    当客户端打开客户端将连接的页面时,会初始化握手。然后服务器检查身份验证并强制断开连接。然后服务器不检查相同套接字连接的身份验证(不初始化握手)。您必须从客户端强制建立新连接。

    socket = io.connect(SOCKET_URL, {forceNew: true});
    

    你的代码

    var myIoSocket = io.connect("http://192.168.0.7:8080",{forceNew: true});
    

    我有同样的问题,这解决了我的问题。如果你强制建立一个新的连接,我希望它之前的所有事件监听器都会丢失。您必须再次添加事件侦听器。

    【讨论】:

      猜你喜欢
      • 2018-02-10
      • 2011-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 2016-08-16
      • 1970-01-01
      • 2015-03-10
      相关资源
      最近更新 更多