首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ uWebSockets在一个线程中集成事件循环

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

Stack Overflow用户
提问于 2017-08-26 05:57:50
回答 1查看 3.4K关注 0票数 2

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

代码语言:javascript
复制
while (true) {
    std::this_thread::sleep_for (variableTime);
    // Execute logic
}

我以前一直使用另一个线程来执行逻辑,但我想将uWebSockets循环与我的循环集成在一起。如下所示:

代码语言:javascript
复制
#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
    }
}

我该怎么做呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-04 18:09:32

今天我也有同样的问题。经过对源代码的挖掘,我想我找到了答案。

您正在寻找的似乎是最近添加的(https://github.com/uNetworking/uWebSockets/pull/762) Node::Poll (集线器继承节点)函数,它是非阻塞的,可在程序主循环中使用。我认为它应该和你脑海中的getMessages一模一样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45889889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档