RFC 6455 仕様に従って Python im で独自の Websocket サーバーを実装しようとしていますが、Base Frame ヘッダーからビットを抽出する際に問題が発生しています。
プロトコルに問題はありません 基本的なバイナリ/16進数の魔法に問題があります
仕様によると、最初の 4 ビットは単一のビット値です。
最初のビットを取得するには、次のようなことを行います (d は websocket からのデータです)。
first_byte = ord(d[0])
print "finished bit",(first_byte >> 7) & 1
後でペイロードサイズを取得したい場合は、私が行います
sec_byte = ord(d[1])
print "payload size",sec_byte & 0x7f
ただし、仕様の後半では、オペコードの 4 ビット値を取得する必要があります。これは、この数学がどのように機能するかについてのリンクでさえ、助けが必要なものです
さらにいじくり回し、その場所に落ち始めました。私はこれで約4日間立ち往生していましたが、誰もが提供できる情報についてはまだ解決されていません。