Recently I implemented a preview view for an Xtext DSL that uses an embedded jetty and renders a JSF screen without deployment. To make bidirectional navigation possible from Xtext to JSF and the other way round, I decided to use websockets. That worked pretty well since I am working on a mac, but when the customer tried to used it the application did not work at all because of Windows and IE11.
First of all there is a bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=404543 that runs IE in compatibility mode to IE9 that does not have websockets integrated. :-(
After switching to Luna 4.4.1 it worked until the next bomb exploded.
After exactly 6 reloads the browser raised a Security Error when someone starts to establish a websocket connection...
That is because IE11 and below do not really close a websocket implicitly when a page is reloaded or closed as it happens in "modern" browsers automatically. The number of connections that are allowed is hard coded deep inside the registry. BTW I hate that registry stuff sooooo much....
After closing the websockets explicitly everything works as expected even within Windows 8.1 and IE11.
The whole story took me 2 full days ...
Why the hell does Microsoft always do things different in their Internet Explorer.
Luckily I do not have to work with that environment sooo often.
Hi Holger!
ReplyDeleteYeah I know that this post is a little bit old, BUT maybe someone has the same problem:
We had some sort of the same issue and your blog entry helped us to solve it.
Our problem was that we tried to open more than 6 Websockets at the same time - and yeah thats not possible if it's not configured in the registry.
First of all we tried to increase the number of connections with the group policy - yeah there is an entry for that but the embedded browser didn't care. There is only one possibility to increase the number - 1. find the registry key which will be used for the browser version of the embedded browser (KEY FEATURE_BROWSER_EMULATION) - 2. Create a new key (FEATURE_WEBSOCKET_MAXCONNECTIONSPERSERVER) and create a new DWORD (name: data: )
More informations about controlling the embedded browser:
https://msdn.microsoft.com/en-us/library/ee330736(v=vs.85).aspx
Especially for the browsers websockets:
https://msdn.microsoft.com/en-us/library/ee330736(v=vs.85).aspx
How did you "explicitly" close the connection. Having this same issue.
ReplyDelete