We are trynig to use ARR to front a SIP Over Websockets application and have found that it is removing a mandatory header from the Websocket handshake response. See table below showing the handshake response when using a direct connection versus that returned when using ARR.
This causes browser to reject the response as it does not meet teh websocket rfc behaviour, which says that if a request is made with a Sec-WebSocket-Protocol specified, the response must include the same protocol header. In this case "Sec-WebSocket-Protocol: sip"
Correct treatment of WebSocket subprotocols seems to be a fairly fundamental aspect for a Reverse Proxy. So can I ask:
- Is this supposed to be supported?
- Is this known issue?
- Is a fix on the roadmap?
Regards,
Warren
Direct | ARR | ||
HTTP/1.1 101 Web Socket Protocol Handshake\r\n | HTTP/1.1 101 Web Socket Protocol Handshake\r\n | ||
Expert Info (Chat/Sequence): HTTP/1.1 101 Web Socket Protocol Handshake\r\n | Expert Info (Chat/Sequence): HTTP/1.1 101 Web Socket Protocol Handshake\r\n | ||
Message: HTTP/1.1 101 Web Socket Protocol Handshake\r\n | Message: HTTP/1.1 101 Web Socket Protocol Handshake\r\n | ||
Severity level: Chat | Severity level: Chat | ||
Group: Sequence | Group: Sequence | ||
Request Version: HTTP/1.1 | Request Version: HTTP/1.1 | ||
Status Code: 101 | Status Code: 101 | ||
Response Phrase: Web Socket Protocol Handshake | Response Phrase: Web Socket Protocol Handshake | ||
Upgrade: WebSocket\r\n | Upgrade: Websocket\r\n | ||
Connection: Upgrade\r\n | Server: Microsoft-IIS/8.0\r\n | ||
Sec-WebSocket-Origin: http://<FQDN-origin-hostname>\r\n | X-Powered-By: ARR/2.5\r\n | ||
Sec-WebSocket-Location: ws:///<FQDN-server-hostname>\r\n | Sec-WebSocket-Accept: 3SxL8CBX4UYv3Xqi9GRNhZ2P1FY=\r\n | ||
Sec-WebSocket-Accept: tFtQwxEHR/Yj42MLSlxwA3XTvHY=\r\n | Connection: Upgrade\r\n | ||
Sec-WebSocket-Protocol: sip\r\n | Date: Wed, 20 Nov 2013 05:27:38 GMT\r\n | ||
\r\n | \r\n | ||
HTTP response 1/1 | HTTP response 1/1 | ||
Time since request: 0.005959000 seconds | Time since request: 0.016354000 seconds | ||
Request in frame: 344 | Request in frame: 300 |
Missing |
Added |