Я разрабатываю простой сервер веб-сокетов в Linux, используя libwebsocket lib.
Мне нужно отправить пакет инициализации при установленном событии для каждого клиентского соединения.
Если я использую
memcpy( p, "init", 4);
lws_write(wsi, p, 4, LWS_WRITE_TEXT);
in
case LWS_CALLBACK_ESTABLISHED:
я получаю сообщение об ошибке
[2018/07/31 18:50:15:5451] ERR:
[2018/07/31 18:50:15:5451] ERR: 0000: 81 04 69 6E 69 74 ..init
[2018/07/31 18:50:15:5451] ERR:
[2018/07/31 18:50:15:5451] ERR: ** 0x564b10ce5170: vh: default, prot: lws-minimal, role ws: Illegal back-to-back write of 6 detected...
Из документации я прочитал, что я не могу вспомнить lws_write
в этой фазе, но не понимаю, как подготовить данные для фазы LWS_CALLBACK_SERVER_WRITEABLE
(и затем вызвать lws_callback_on_writable(wsi);
..).
Почему ошибка сообщает о 6 байтах, когда я записываю 4 байта?
libwebsockets
, но полагаю, что6
может быть связано с дополнительным двухбайтовым заголовком, прикрепленным к небольшим сообщениям (длиной менее 127 байт)... 2-байтовый заголовок + 4-байтовое сообщение => 6 байтов записано. - person Myst   schedule 03.08.2018