Я пишу встроенный сервер WebSocket и работаю напрямую с соответствующего RFC.
Мой сервер правильно отвечает на запрос обновления от браузера, и браузер, в своем примере javascript, отправляет короткое сообщениечерез недавно установленную розетку.так что все работает нормально.
Сообщение короткое (полный кадр - только 21 байт) и содержит все соответствующие поля, которые мой сервер успешно декодирует.
Stumper находится в битах с 9 по 15, чтодолжны содержать длину полезной нагрузки.
вот шестнадцатеричный дамп захваченного сообщения на WireShark:
81 8f 11 ab d5 0b 5c ce a6 78 70 cc b0 2b 65 c4f5 78 74 c5 b1
, поэтому первый байт содержит FIN (1 бит), RSVD1 (1 бит), RSVD2 (1 бит), RSVD3 (1 бит) и 4 бита кода операции,пока все хорошо.
8f - это stumper: содержит бит MASK и длину полезной нагрузки, бит MASK установлен в 1, что нормально, но остальные 7 бит имеют значение 71 (0x47), когда вседлина кадра составляет всего 21 байт, а полезная нагрузка - всего 15 байт.
Так что же я делаю не так?
Я могу декодировать сообщение, применив маску XOR к полезной нагрузке, но к длинепроблема заключается в том, что он управляет циклом декодирования и выполняет 71 итерацию вместо 15, что и должно быть.
Я благодарен за любую подсказку относительно того, что я делаю неправильно
Спасибо