问题:
我刚刚成功地让我的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套接字的通信。
答案 0 :(得分:1)
这是one of those occasions,其中的问题并非完全重复,但是the selected answer to a question answers this one as well。
很简单:只需将您的https服务器对象作为socket.io的端口参数传递。
代码// ... 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);