这段代码在chrome和firefox下是没有问题的,但是换成ie11之后,在for循环那块,前6个次都成功了,但是从第7次到第10次全都失败了,new WebSocket
返回异常SecurityError
。
function Socket(wsUrl){
try {
this._connect(wsUrl);
} catch (e) {
console.warn(e);
try {
this._connect(wsUrl);
} catch (e) {
console.error(e);
}
}
}
Socket.prototype = {
_connect: function(wsUrl) {
if("WebSocket" in window){
this.io = new WebSocket(wsUrl);
}else if("MozWebSocket" in window){
this.io = new MozWebSocket(wsUrl);
}
if (this.io) {
this.io.binaryType = "arraybuffer";// talking binary
this._addEvent();
}
},
_addEvent : function() {
this.io.onopen = function() {
console.log("WebSocket connection opened!");
};
this.io.onclose = function(){
console.log("WebSocket closed!");
};
this.io.onerror = function(evt){
console.log(evt.toLocaleString());
};
}
};
var lserver = 'websocket服务器域名';
for(var i=0;i<10;i++) {
setTimeout(function(){
var socket = new Socket('ws://'+lserver+':8110/ws/conn');
},i*1000);
}
IE10/11限制了到单个服务器最大并发websocket的数量,这个数字的缺省值是6,所以当你创建第7个websocket连接时就会报SecurityError。
这个数字可以在注册表里改,具体信息在这里
不过话说回来,什么应用需要同时建立这么多WebSocket连接泥?
修改了注册表,重启后仍让不生效啊。