C++ C++;uWebSockets在一个线程中集成事件循环

C++ C++;uWebSockets在一个线程中集成事件循环,c++,websocket,server,event-loop,single-threaded,C++,Websocket,Server,Event Loop,Single Threaded,我在我的C++项目中使用uWebSosits,我有自己的自定义事件循环。这是一个while循环,每次执行之间有可变的延迟。它看起来像这样: while (true) { std::this_thread::sleep_for (variableTime); // Execute logic } #include <iostream> #include <uWS/uWS.h> using namespace std; int main () {

我在我的C++项目中使用uWebSosits,我有自己的自定义事件循环。这是一个while循环,每次执行之间有可变的延迟。它看起来像这样:

while (true) {
    std::this_thread::sleep_for (variableTime);
    // Execute logic
}
#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
    }
}
我以前使用过另一个线程来执行逻辑,但我想将uWebSockets循环与我的循环集成在一起。大概是这样的:

while (true) {
    std::this_thread::sleep_for (variableTime);
    // Execute logic
}
#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
    }
}
#包括
#包括
使用名称空间std;
int main(){
uWS::Hub h;
h、 onMessage([](uWS::WebSocket*ws,char*message,大小\u t长度,uWS::操作码操作码){
ws->send(消息、长度、操作码);
});
如果(听(3000)){
h、 run();
}
while(true){
std::this_线程::sleep_for(variableTime);

h、 getMessages();//今天我遇到了同样的问题。在对源代码进行了深入研究之后,我想我找到了答案


看起来您正在寻找的是最近添加的()节点::Poll(Hub继承节点)在程序主循环中使用的非阻塞函数。我认为它应该完全按照您心目中的getMessages来工作。

这正是我想要的!我已经用并行线程解决了这个问题,所以我有点希望他们能早一点添加它:p但晚一点总比不添加好。无论如何,非常感谢!