我正在尝试构建一个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服务器时,它工作得很好..
答案 0 :(得分:1)
简单地
var socket = io.connect('/', {secure: true});
编辑:默认情况下,socket.io将尝试在与webserver托管Web内容相同的主机上建立连接,因此无需指定主机/协议/端口。 /
表示连接到默认命名空间。
答案 1 :(得分:0)
我解决了这个问题..
因此对于http来说,如果您使用
在客户端上开始编写脚本就足够了$(function(){
....
});
但它不适用于https。 我把它改成了
jQuery(function($){
....
})(jQuery);
很奇怪,但它对我有用。