正在将 socket.io 客户端连接到 https

Connecting socket.io client to https

我正在尝试构建一个网络聊天应用程序,并希望通过 https 将我的客户端连接到 socket.io 服务器。 貌似一切正常,但客户端终究连接不上..

服务器代码:

var app = require('express')();
var fs = require('fs');
var options = {
    key: fs.readFileSync('server.key'),
    cert: fs.readFileSync('server.crt')
};
var server = require('https').createServer(options, app).listen(3000,function(){
        console.log("Https server started on port 3000");
});
var io = require('socket.io').listen(server);


app.get('/', function(req, res){
        res.sendFile(__dirname + '/index.html');
});


io.on('connection', function(socket){
    console.log("Client connected");
           /*....*/
});

连接服务器的客户端代码:

$(function($){
var socket = io.connect('https://localhost:3000', {secure: true});
.....
});

$(function($).. 当我将其设为 http 服务器时,它工作正常..

简单

var socket = io.connect('/', {secure: true});

编辑: 默认情况下 socket.io 将尝试在与网络服务器托管 Web 内容的同一主机上建立连接,因此无需指定 host/protocol/port . / 声明连接到默认命名空间。

我解决了问题..

因此,对于 http,如果您在客户端上以

开始您的脚本就足够了
$(function(){
....
});

但它不适用于 https。 我把它改成了

jQuery(function($){
....
})(jQuery);

很奇怪,但对我有用。