C ++ uWebSockets intègre la boucle d’événement dans un thread

J’utilise uWebSockets dans mon projet C ++, où j’ai ma propre boucle d’événement personnalisée. C’est une boucle while, avec un délai variable entre chaque exécution. Cela ressemble à ceci:

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

J’ai déjà utilisé un autre thread pour exécuter la logique, mais je veux intégrer la boucle uWebSockets à ma boucle. Quelque chose comme ça:

 #include  #include  using namespace std; int main () { uWS::Hub h; h.onMessage([](uWS::WebSocket *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 } } 

Comment pourrais-je y aller?

Aujourd’hui j’ai eu la même question. Après quelques recherches sur le code source, je pense avoir trouvé la réponse.

Il semble que ce que vous recherchez soit une fonction récemment ajoutée ( https://github.com/uNetworking/uWebSockets/pull/762 ) Node :: Poll (Hub hérite du nœud) qui ne bloque pas pour être utilisée dans la boucle principale du programme. . Je pense que cela devrait fonctionner exactement comme les getMessages que vous aviez en tête.