将socket.io客户端连接到https

时间:2015-11-27 01:05:59

标签: https socket.io server client

我正在尝试构建一个Web聊天应用程序,并希望使用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服务器时,它工作得很好..

2 个答案:

答案 0 :(得分:1)

简单地

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

编辑:默认情况下,socket.io将尝试在与webserver托管Web内容相同的主机上建立连接,因此无需指定主机/协议/端口。 /表示连接到默认命名空间。

答案 1 :(得分:0)

我解决了这个问题..

因此对于http来说,如果您使用

在客户端上开始编写脚本就足够了
$(function(){
....
});

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

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

很奇怪,但它对我有用。