Hi all,
I am working on a connector with HTTP main connection and Websocket secondary connection. The websocket connection seems to be opened and then closes immediately. I verified that the websocket connection is working with postman (it is opened and stays open till the user Disconnects it) but couldn’t make it with Dataminer.
The connections tag implementation is like this:
I also tried to use the Type attribute but the same result.
The custom Websocket opening handshake:
The handshake URL is dynamic ip which is filled in after element startup and can also be changed by the user (ws://[ip]:[port]/as/system/status).
Wireshark capture shows that the opening handshake request is correctly formatted (the full request URI is correct).
The handshake seems successful as the server responds the following:
While the websocket is supposed to stay open, it closes immediately after the handshake. The strange thing is the websocket response from the server shows that it looks like the URI didn’t arrive at the server correctly. As can be seen below, the IP part is missing, and the URL contains the port and the last part of the URI.
Any help on this is much appreciated.
Hi Fenta,
As we investigated together this is most likely caused by the "Upgrade" header in the websocket handshake which is parsed in a case-sensitive way by the receiving device. DataMiner is sending "Websocket" as value, while the device expects "websocket".
However, according to websocket RFC 6455 this value should be parsed in a case-insensitive way.
Section 4.2.1
3. An |Upgrade| header field containing the value "websocket",
treated as an ASCII case-insensitive value.4. A |Connection| header field that includes the token "Upgrade",
treated as an ASCII case-insensitive value.
Thanks a lot Tom for the investigation and answer.