如何通过使用Node的HTTPS提供socket.io?

问题:

我只是成功地得到了我的Node.js服务器正常工作,并与SSL安装,很好。 但是我看到这个:

[阻止] https://www.mywebsite.com/上的页面通过HTTPS加载,但是从http://54.xxx.xxx.77:4546 / socket.io / socket.io运行不安全的内容.js ':这个内容也应该通过HTTPS加载。

我试着把socket.io的URL改为https ,但是这当然不起作用,因为socket.io坚持提供它自己生成的文件,这个过程我不认为我能控制。 我可以更改socket.io侦听的端口,就是这样。

问题是:

那么我如何安全地服务socket.io(1.0)?

代码:

 var port = 4546; var io = require('/node_modules/socket.io')(port); 

作为一个方面说明,我认为socket.io(它的来回通信)应该正常运行HTTPS,没有任何额外的工作; 我在某处读过 也许有人可以证实。 Web套接字的通信必须安全地传输。

这是其中问题不是很重复的场合之一 ,但是选定的问题答案也可以回答这个问题 。

这很简单:只需将您的https服务器对象作为socket.io的端口parameter passing即可。

 // ... require stuff var app = express(); // ... set up your express middleware, etc var server = https.createServer(sslOptions, app); // attach your socket.io server to the express server var io = require("socket.io").listen(server); server.listen(port); 

代码由aembke