ハンドシェイクが正常に完了した後、最新のプロトコルに従ってChromeにメッセージを送信しようとします。マスクせず、エンコードせず、プレーンテキストで、またはで囲まずに送信chr(0)
しますchr(255)
。最初のメッセージは正常に送信され、Google Chromeは接続を閉じません(ただし、-eventは発生しませんonmessage
が、2番目のメッセージを送信すると、Received unexpected compressed frame
-errorが発生し、接続が終了します。その理由と方法を教えてください。修理する?
%x1
編集:私の推測では、メッセージの最後に、テキストオペコード(意味は何でも、PHPで表現されているものは何でも)のようなある種のオペコードを追加し、別のオペコードを追加する必要があります。
編集:すべての中で最も奇妙なことが起こりました:私はもう一度他の質問のコードを試しましたが、base64エンコーディングを非アクティブ化しました:
private static function encode($text) {
// $text = base64_encode($text);
// 0x1 text frame (FIN + opcode)
$b1 = 0x80 | (0x1 & 0x0f);
$length = strlen($text);
if ($length <= 125)
$header = pack('CC', $b1, $length);
elseif ($length > 125 && $length < 65536)
$header = pack('CCn', $b1, 126, $length);
else
$header = pack('CCN', $b1, 127, $length);
return $header . $text;
}
そして今、それは機能しますか?!とにかく説明の後にあるので、エンコーディングは問題ではないはずですが。でも文句は言いません。