Проблема с websocket

ZiX

Коддинг, Парсинг
Регистрация
9 Июл 2011
Сообщения
1.378
Реакции
707
При отправке я использую
Код:
def message_encode(buf, opcode, base64=False):
    if base64:
        buf = b64encode(buf)
    b1 = 0x80 | (opcode & 0x0f) # FIN + opcode
    payload_len = len(buf)
    if payload_len <= 125:
        header = struct.pack('>BB', b1, payload_len)
    elif payload_len > 125 and payload_len < 65536:
        header = struct.pack('>BBH', b1, 126, payload_len)
    elif payload_len >= 65536:
        header = struct.pack('>BBQ', b1, 127, payload_len)

    return header+buf

message_encode(json.dums({"key":"val"}).encode('utf-8'), 0x01, False)
На сервер доходит в виде 9{"type": "system"}
Получаю как
Код:
while(socket_recv($changed_socket, $buf, 1024, 0) >= 1)
                {
                    $received_text = $this->unmask($buf); //unmask data
                    $data = json_decode($received_text, true); //json decode

                    break 2;
                }

Так вот $buf принимает 9{"type": "system"} а точнее \x819{"type": "system"}
Как видно json_decode это не хавает...
Если я Проверяю данные от браузера то $buf == ®s; ՅÿZG菁¾@®_N띞¶Q®_CបR®IBK®
После унмаск всё хорошо... В тоже время данные с сервера идут в виде \x819{"type": "system"}
и принимаются клиентом хорошо. функции маск и унмаск стандартные для вбсокетов. Сервер пхп. Клиент Питон3.

маск и унмаск В принципе не причём... socket.send() Почему то в виде \x819{"type": "system"}
Хотя должно быть ®s; ՅÿZG菁¾@®_N띞¶Q®_CបR®IBK®
Кто сталкивкался помогите.... Спасибо!
 
Принимается через recv -- <class 'bytes'>
Передаю я тоже <class 'bytes'>
Например
Прием
b'\x816{"type":"system","message":"xxxxxxxxx connected"}'
<class 'bytes'>

Отдаю
b'\x819{"type": "system", "message": "xxxxxxxxx connected"}'
<class 'bytes'>
 
Не может ли это делать gzip сжатие?
 
Назад
Сверху