1

WebSocket を使用してブラウザに送信するデータをエンコードしようとしています。私はこのチュートリアルに基づいています:

private function encode($text) {
    // 0x1 text frame (FIN + opcode)
    $b1 = 0x80 | (0x1 & 0x0f);
    $length = strlen($text);

    if($length > 125 && $length < 65536)
        $header = pack('CCS', $b1, 126, $length);
    elseif($length >= 65536)
        $header = pack('CCN', $b1, 127, $length);

    return $header.$text;
}

Webブラウザでデータを取得していないため、この機能の何が問題なのか誰にも教えてもらえますか?
私はこの行でそれを使用します:

    $msg = $this->encode($msg);

    parent::send($client,$msg);

PS: バイナリ アクションが苦手です。

4

3 に答える 3

1

私はそれを解決しました。if ステートメントが間違っていました。それは彼らがどのように見えるべきかです:

    if($length <= 125)
        $header = pack('CC', $b1, $length);
    elseif($length > 125 && $length < 65536)
        $header = pack('CCS', $b1, 126, $length);
    elseif($length >= 65536)
        $header = pack('CCN', $b1, 127, $length);
于 2013-01-25T22:14:50.910 に答える
1

もともと同じコードを使用して、WebSocket スクリプトでデータをエンコードしていましたが、修正しても機能しない場合があります。問題は、ペイロード (データ) の長さが正しく計算されないことです。つまり、strlen 関数だけを使用することはできません。

これを修正する方法の詳細については、私の関連記事を参照してください: WebRTC 候補情報の末尾にあるこのデータは何ですか?

于 2013-01-26T04:00:05.057 に答える