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

时间:2014-10-27 22:49:41

标签: javascript node.js https socket.io socket.io-1.0

问题:

我刚刚成功地让我的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套接字的通信。

1 个答案:

答案 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);
     

aembke

代码