[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как раскодировать �
arbuzmaster
Добрый день!
Помогите раскодировать знаки �W , � , �^
В общем проблема такая: есть Websocket сервер написан на php, он работает исправно с различными клиентами - Google chrome, Websocket на C++ (arduino). Для закрытия не рабочих, оборванных соединений на сервере реализован механизм ping/pong который закрывает такие соединения. Так вот он отлично работает со всеми выше перечисленными клиентами. Я написал клиент на php, но он по какой-то причине получает неправильные фреймы и при попытке их декодировать print_r(hybi10Decode($result)); выдает следующее

Array
(
[type] =>
[payload] =>
[error] => protocol error (1002)
)

а должен выдавать

Array
(
[type] => ping
[payload] => 127.0.0.1:35484
)

Если выводить сообщения без функции hybi10Decode то в терминале выводится следующее

�W{"info":[{"device":"module_esp","id":"1","esp_ip":"192.168.1.101","wifi_power":"-86"}]}
�127.0.0.1:35484
�^{"update":[{"module_esp":"2","group":"sensors","device":"sensor_light","id":"2","value":"0"}]}

Я подозреваю, что символы �W , � , �^ это бинарные данные, но как их вывести в терминал в бинарном виде и обработать в последующем при помощи php не знаю!
В общем основной вопрос - как прочитать эти символы на php? Почему php портит фрейм я тоже не знаю, ведь другие клиенты фрейм воспринимают нормально.

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
Оставлю это здесь, может кому пригодится!
В общем решил вопрос, оказывается это я сам накосячил, отправлял фреймы без маски а декодироать пытался как с маской. А поглядел вот так:

$firstByteBinary = sprintf('%08b', ord($data[0]));
$secondByteBinary = sprintf('%08b', ord($data[1]));
$opcode = bindec(substr($firstByteBinary, 4, 4));


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.