是否可以在FireFox/Safari中创建多个WebSocket

Is it possible to create multiple WebSockets in FireFox / Safari?

本文关键字:创建 WebSocket Safari FireFox 是否      更新时间:2023-09-26

我想在客户端和服务器之间创建两个WebSocket连接。第一个连接用于向端口1337发送时间关键型应用程序的纯文本。第二个连接应该通过在端口443上使用tls来用于安全的数据传输。我使用以下代码来创建两个WebSocket:

var ip  = document.URL.split("/")[2].split(":")[0];
var wss = new WebSocket("wss://" + ip + ":443"); //secure
var ws  = new WebSocket("ws://"  + ip + ":1337"); //realtime

好吧,在Chrome和Opera中运行它就像一种魅力。但当我在FF中测试它时,它似乎建立了第一个(安全)连接,当涉及到第二个连接时,它会中止所有代码执行。在Safari中,我收到一条错误消息,表示服务器已关闭连接,尽管它仍在运行。在这两种情况下,它都通过https下载html页面和css等,但javascript执行此时失败。

有人知道这里出了什么问题吗?如前所述,在Chrome和Opera中,一切都很好。我还没有测试IE。

所以我想我现在知道这个问题是什么了:

WebSockets不应在混合内容环境中使用;也就是说,您不应该从使用HTTPS加载的页面打开非安全的WebSocket连接,反之亦然。事实上,一些浏览器明确禁止这样做,包括Firefox 8及更高版本。

https://developer.mozilla.org/en-US/docs/WebSockets/Writing_WebSocket_client_applications#Security_considerations

因此,我似乎无法在一个HTML页面上打开两个具有不同安全级别的连接。