Как обрабатывать данные по ws если их больше 125

В целях саморазвития, пытаюсь написать простой ws эхо сервер, через модуль ноды net. Все нормально работает если я через браузер по ws оправляю не больше 125 символов, декодирование происходить правильно и в браузере выводится то что я ему написал. Я знаю что если тело больше 125 байт, то во второй байт записывается 126, а 3 и 4 байт это длина тела статья по ws на С

введите сюда описание изображения

Мой код, рукопожатие опущено

socket.on('data', (data_buffer) => { // Buffer [129, 129, 55, 87, 111, 186, 6] от клиента
    let bytes_length = data_buffer[1] - 128, // количество байт
        payload_buffer = Buffer.alloc(bytes_length), // [ 0, 0, 0 ] размер буфера = количество байт полезной нагрузки
        offset // смещение в зависимости от длины сообщения

    if(bytes_length <= 125) {
        offset = 2
    } else if(bytes_length >= 126) {
        data_buffer[1] = 126
        
        data_buffer[2] = ((bytes_length >> 8) & 255) // data_buffer[2] = 0
        data_buffer[3] = ((bytes_length) & 255) // data_buffer[3] = 126
        offset = 4
    }

    let mask = Buffer.from( // маска 4 байта
            [
                data_buffer[offset], 
                data_buffer[offset + 1], 
                data_buffer[offset + 2], 
                data_buffer[offset + 3]
            ])

    if(mask) {
        offset += 4
        console.log(data_buffer.toJSON());
        for(let i = 0; i < bytes_length; ++i) {
            payload_buffer[i] = data_buffer[offset + i] ^ mask[i % 4]
        }

        let msg = Buffer.concat([Buffer.from([129, bytes_length]), payload_buffer])
        
        socket.write(msg)
    }
})Я не могу понять что нужно сделать с этими байтами длины что бы декодирование прошло правильно.

Вот что приходит с лога когда я отправляю например 126 символов a

data: [
129, 126,  0, 126, 153,   9, 59, 91, 234, 109, 80, 49,
255, 110, 82,  96, 237, 122, 81, 50, 254, 123, 81, 40,
240, 110, 73,  62, 238,  99, 90, 60, 243, 111, 82, 52,
252, 123, 90,  51, 254, 124, 84, 41, 234,  97, 92, 46,
246,  50, 83,  41, 248,  96, 78, 52, 254, 127, 83, 49,
162, 124, 84,  41, 234,  97, 92, 45, 236,  97, 73, 58,
236, 102, 92,  45, 162,  97,  0, 41, 236, 102, 82, 63,
248,  97, 92,  45, 236, 102, 82, 41, 248,  97, 92, 46,
246, 127, 83,  41,
... 34 more items

]


Ответы (0 шт):