SecurityError в IE11 при инициализации WebSocket - PullRequest
0 голосов
/ 28 сентября 2018

У нас есть код, который создает несколько экземпляров websocket каждый раз, когда приложение открывается.

privateMembers.webSocket = new WebSocket(url, protocol);

, где URL содержит токен аутентификации.И эти экземпляры закрываются, когда приложение закрывается / выгружается.Приложение внедряется (iframe) в другое приложение при обнаружении проблемы.

Мы заметили, что в консоли браузера зарегистрировано исключение SecurityError.И когда это происходит, количество веб-сокетов, создаваемых при следующей инициализации, уменьшается.Например, мы создаем 5 экземпляров websocket, при следующем запуске iframe, он будет создавать только 4 экземпляра, и это исключение будет зарегистрировано.Мы очищаем счетчик и массив каждый раз, когда выгружаем приложение.

Кроме того, это происходит только в последних версиях IE 11 и Edge.

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Та же история здесь.У меня была та же проблема с приложением, загруженным в iFrame, который использовал Websockets.Вам нужно добавить раздел реестра, чтобы разрешить больше подключений к websocket.
InternetExplorer ограничивает количество соединений от одного хоста до 6.

Для этого есть официальное заявление от Microsoft: https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/general-info/ee330736(v=vs.85)#websocket-maximum-server-connections Вам просто нужно использовать iexplore.exe для ключа вместо contoso.exeописано в приведенном выше описании.

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) SOFTWARE Microsoft Internet Explorer Main FeatureControl FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER iexplore.exe = (DWORD) 0x00000012 (18)

Эта конфигурация устанавливает допустимый предел равным 18.

0 голосов
/ 05 октября 2018

IE 11 имеет ограничение в 6 экземпляров websocket на хост.И, похоже, в последней версии IE 11 (11.xxx), похоже, есть обновление о том, как обрабатываются эти экземпляры.

Если мы закрываем iframe, который имеет соединения с websocket, и не запускаем oncloseв этих случаях эти экземпляры все еще остаются, но без какой-либо ссылки (висячие).

И чтобы исправить нашу проблему, мы должны были пройти через все эти экземпляры websocket и убедиться, что все они закрыты, когда мы закрываемфреймУменьшение числа созданных экземпляров связано с нераскрытым экземпляром websocket.

Мы до сих пор не нашли никакой документации по этому вопросу в последних версиях IE 11.И если кто-то может это предоставить, это будет действительно здорово и высоко ценится.

...