De acordo com a especificação WebSockets, um cabeçalho Sec-WebSocket-Extensions
em branco não é permitido e considerado dados malformados, e "o destinatário de tais dados malformados DEVE imediatamente Fail the WebSocket Connection ." (ênfase deles)
Se o seu servidor WebSockets não suportar nenhuma dessas extensões, você deve omitir esse cabeçalho em vez de anexá-lo, mas deixá-lo mal formado (em branco). Em outro lugar na especificação, ele menciona que o cliente deve considerar a lista de extensões de suporte como nula se esse cabeçalho não estiver presente na resposta do servidor.
Atualizado para adicionar:
Eu também acredito que a saída Sec-WebSocket-Accept
do seu servidor está incorreta.
Eu escrevi a seguinte função shell para obter um valor Sec-WebSocket-Key
e calcular um Sec-WebSocket-Accept
dele
wscalc () {
WSGUID="258EAFA5-E914-47DA-95CA-C5AB0DC85B11"
echo -n "${1}${WSGUID}" | openssl sha1 -binary | openssl base64
}
Eu testei isso com o exemplo da especificação WebSockets RFC6455 e ele obtém o valor correto:
$ wscalc dGhlIHNhbXBsZSBub25jZQ==
s3pPLMBiTxaQ9kYGzzhZRbK+xOo=
Mas quando eu executo no Sec-WebSocket-Key
do seu cliente, recebo um valor diferente do que o seu servidor colocou em Sec-WebSocket-Accept
:
$ wscalc 'qrmw/m+BoZije6h9HYKmVw=='
B18B9fmlWz7D6Gu9eCWRNkcB1II=