websocket プロトコルを実装しようとしていますが、何らかの理由で iPad が連携していません。iPad はHybi-00 仕様を実行しており、問題はハンドシェイクのどこかにあります。リクエストと次のマジック バイトを読み取り、正しい返信であると思われる内容で応答しています。iPad は私に同意せず、接続をシャットダウンします。
プロトコル ハンドラーは、ほとんどの最新ブラウザーで実行されるHybi-06で動作しています。
問題を解決できるように、iPadが websocket 接続をシャットダウンすることにした理由を教えてくれる方法が本当に欲しいです。それか、クロムまたは他のブラウザを取得して、WebsocketバージョンをiPadがサポートするのと同じバージョンにダウングレードして、実際に何が起こっているかについて何らかの手がかりを得ることができます.
この情報を取得する方法はありますか?
さて、実際のエラーを説明してもらえるとうれしいのですが、ハンドシェイクは次のとおりです。
GET /myurl HTTP/1.1
Upgrade:WebSocket
Connection:Upgrade
Host:my-host.com
Origin:https://my-host.com
Sec-WebSocket-Key1:1 QB 9 , $169780@8A`@4
Sec-WebSocket-Key2:3 160RhGi7mu 97*66br9
次の 8 バイトがキーです。
{byte[8]}
[0]: 105
[1]: 199
[2]: 161
[3]: 204
[4]: 5
[5]: 176
[6]: 104
[7]: 199
サーバーはこれで応答します
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade:WebSocket
Connection:Upgrade
Sec-WebSocket-Origin:https://my-host.com
Sec-WebSocket-Location:ws://my-host.com/
そして鍵
{byte[16]}
[0]: 100
[1]: 132
[2]: 37
[3]: 58
[4]: 243
[5]: 195
[6]: 173
[7]: 26
[8]: 180
[9]: 239
[10]: 33
[11]: 56
[12]: 40
[13]: 192
[14]: 123
[15]: 255
これは HTTPS 接続を介して実行されるため、基本的にはデバッガーからのデータです。これは、私の人生でこれを抽出するように正しく構成された Wireshark を取得できないためです。私が知る限り、ハンドシェイク キーも正しいです。