如何通过使用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