Использую https://libwebsockets.org/ 4.3.1, приложение запускает websocket-сервер, при приёме команды делает работу и возвращает ответ.
Код callback-а упрощёно выглядит так
Код: Выделить всё
..........
switch (reason) {
.........
case LWS_CALLBACK_ESTABLISHED:
// запоминаем клиента
break;
case LWS_CALLBACK_RECEIVE:
// запускаем поток выпонения команды
break;
case LWS_CALLBACK_SERVER_WRITEABLE:
// отправляем ответ клиенту
break;
......
}
Приложение нормально отрабатывает на x86_64 хосте, но вот перенёс на железку и наблюдаю странную картину - приложение получает команду, отрабатывает её, вызывает lws_cancel_service(context), но ответ клиент получает только через 5 мин, т.е. между событиями LWS_CALLBACK_RECEIVE и LWS_CALLBACK_SERVER_WRITEABLE проходит 5 мин, что конечно неприемлимо долго.
В описании https://libwebsockets.org/lws-api-doc-master/html/group__service.html#ga29c246707997ab7a466aa709aecd2d7b
Неужто так проявляется As soon as possible и можно ли это убыстрить?lws_cancel_service() - Cancel wait for new pending socket activity
Parameters
context Websocket context
This function creates an immediate "synchronous interrupt" to the lws poll() wait or event loop. As soon as possible in the serialzed service sequencing, a LWS_CALLBACK_EVENT_WAIT_CANCELLED callback is sent to every protocol on every vhost.
lws_cancel_service() may be called from another thread while the context exists, and its effect will be immediately serialized.
Включение отладочного вывода через lws_set_log_level(LLL_ERR | LLL_WARN | LLL_NOTICE | LLL_INFO | LLL_DEBUG | LLL_EXT | LLL_CLIENT | LLL_LATENCY | LLL_USER | LLL_THREAD, NULL) не прояснило так как я не увидел ни одного вывода из библиотеки после получения команды от пользователя, весь вывод был до установления соедининения с сервером и касался его запуска.
Спасибо.