Невозможно отправить двоичные данные через WebSockets

Я занимаюсь разработкой приложения для просмотра, в котором сервер захватывает изображение, выполняет некоторые операции по обработке изображений, и это нужно показать на стороне клиента, на холсте HTML5. Сервер, который я написал, находится на VC ++ и использует http://www.codeproject.com/Articles/371188/A-Cplusplus-Websocket-server-for-realtime-interact.

До сих пор я реализовал необходимую функциональность. Теперь все, что мне нужно сделать, это оптимизация. Ссылка была приложением чата, которое предназначалось для отправки строк, и поэтому я кодировал данные в 7-битном формате. Что вызывает накладные расходы. Мне нужна возможность передачи двоичных данных. Поэтому я изменил кодировку и кадрирование (теперь код операции равен 130, для двоичных сообщений вместо 129.) и я могу сказать, что с серверной частью все в порядке. Я наблюдал исходящий кадр, он следует протоколу. Я сталкиваюсь с проблемой на стороне клиента.

Когда клиент получает входящее сообщение, если все байты находятся в пределах (от 0 до 127), он вызывает onMessage (), и я могу успешно декодировать входящее сообщение. Однако даже одно введение символа> 127 заставляет клиента вызывать onClose (). Соединение закрывается, и я не могу найти причину. Пожалуйста, помогите мне.

PS: я использую chrome 22.0 и Firefox 17.0

2

Решение

Похоже, ваша проблема связана с тем, как вы собираете свои кадры? Поскольку у вас установлено соединение, которое прерывается, когда событие onmessage собирается сработать, я предполагаю, что оно связано с кадром?

Что если вы изучите сеть -> WebSocket -> фрейм вашего соединения в Google Chrome? что это говорит?

это может быть для вас вне сферы применения? но я один из разработчиков платформы XSockets.NET (C #), у нас есть бинарная поддержка, если вам интересно, есть пример, который я случайно опубликовал совсем недавно, это можно найти на https://github.com/MagnusThor/XSockets.Binary.Controller.Example

1

Другие решения

Как вы наблюдали исходящий кадр и какие байты заголовка вы наблюдали? Похоже, что вы на самом деле не устанавливаете двоичный код операции успешно, и это вызывает проверку UTF-8 в браузере, которая не работает.

1

По вопросам рекламы [email protected]