这段代码在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连接泥?
修改了注册表,重启后仍让不生效啊。