Снимите маску с данных WebSocket с клиента в PHP - PullRequest
0 голосов
/ 02 марта 2020

Я создаю экспериментальное приложение чата, используя PHP на https://github.com/kamshory/WebRTC-WebSocket-Chat

Когда клиент отправляет короткое сообщение JSON, оно работает нормально. Но когда клиент отправляет сообщение JSON размером более 1 КБ, сервер не может его правильно принять. Сервер прочитал неверные данные.

Вот мой код

    <?php
class Utility
{
    /**
     * Unmask incoming framed message
     * @param $text Masked message
     * @return string Plain text
     */
    public static function unmask($text)
    {
        $length = ord($text[1]) & 127;
        if ($length == 126) 
        {
            $masks = substr($text, 4, 4);
            $data = substr($text, 8);
        } 
        else if ($length == 127) 
        {
            $masks = substr($text, 10, 4);
            $data = substr($text, 14);
        } 
        else 
        {
            $masks = substr($text, 2, 4);
            $data = substr($text, 6);
        }
        $text = "";
        for ($i = 0; $i < strlen($data); ++$i) 
        {
            $text.= $data[$i] ^ $masks[$i % 4];
        }
        return $text;
    }
    /**
     * Encode message for transfer to client
     * @param $text Plain text to be sent to the client
     * @return string Masked message
     */
    public static function mask($text)
    {
        $b1 = 0x80 | (0x1 & 0x0f);
        $length = strlen($text);
        if ($length <= 125) 
        {
            $header = pack('CC', $b1, $length);
        }
        else if ($length > 125 && $length < 65536)
        { 
            $header = pack('CCn', $b1, 126, $length);
        }
        else if($length >= 65536)
        {
            $header = pack('CCNN', $b1, 127, $length);
        } 
        return $header . $text;
    }
    ......

Кто-нибудь может объяснить, как замаскировать и снять маску JSON сообщение в WebSocket?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...