socket.io https connect triggering passport.js deserializeUser

时间:2015-02-05 21:48:17

标签: javascript node.js websocket socket.io passport.js

我目前有一个使用passport.js身份验证和socket.io for web套接字的工作应用程序。它通过http协议工作正常,但是一旦我告诉socket.io监听https服务器,deserializeUser()就会触发每个连接事件并且没有连接,就不会调用socket.io中间件。

HTTP(有效):

var server =  http.createServer(app).listen(port) //3000;
var io = require('socket.io').listen(server);

HTTPS(失败):

var httpsServer = https.createServer(sslOptions, app).listen(httpsPort)//8443;
//also attempted without any additional options supplied to io.listen()
var io = require('socket.io').listen(httpsServer, {
  "log level": 3,
  "match origin protocol" : true,
  "transports" : ['websocket']
});

客户方:

var socket = io();
  $('form').submit(function(){
    socket.emit('chat message', $('#m').val());
    $('#m').val('');
    return false;
  });

应该响应的Socket.io中间件(同样,当http服务器提供给io.listen()时,相同的中间件也能正常工作):

module.exports = function(app, io){
io.on('connection', function(socket){
  console.log('base connection');
  socket.on('chat message', function(msg){
    console.log('message: ' + msg);
  });
  socket.on('disconnect', function(){
    console.log('disconnect');
  });
});
};

我必须以某种方式在客户端指定协议吗?我假设io管理器应该使用url协议。我还假设传递"match origin protocol" : true作为选项应该使用https。任何建议或帮助表示赞赏。

编辑:

客户端抛出网络错误net::ERR_INSECURE_RESPONSE enter image description here

0 个答案:

没有答案