websocket — C ++ uWebSockets объединяет цикл обработки событий в одном потоке

Я использую uWebSockets в своем проекте C ++, где у меня есть свой собственный цикл событий. Это цикл while, с переменной задержкой между каждым выполнением. Это выглядит примерно так:

while (true) {
std::this_thread::sleep_for (variableTime);
// Execute logic
}

Ранее я использовал другой поток для выполнения логики, но я хочу интегрировать цикл uWebSockets с моим циклом. Что-то вроде этого:

#include <iostream>
#include <uWS/uWS.h>

using namespace std;

int main () {
uWS::Hub h;

h.onMessage([](uWS::WebSocket<uWS::SERVER> *ws, char *message, size_t length, uWS::OpCode opCode) {
ws->send(message, length, opCode);
});

if (h.listen(3000)) {
h.run();
}

while (true) {
std::this_thread::sleep_for (variableTime);
h.getMessages(); // <-- doesn't call `onMessage` until this is executed
// Execute logic
}
}

Как бы я поступил так?

2

Решение

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

Кажется, то, что вы ищете, недавно добавлено (https://github.com/uNetworking/uWebSockets/pull/762) Node :: Poll (Hub наследует Node) функцию, которая не является блокирующей для использования в основном цикле программ. Я думаю, что это должно работать именно так, как вы имели в виду getMessages.

1

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

Других решений пока нет …

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