问题标签 [beast-websockets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4587 浏览

c++ - 如何使用 Beast websockets 进行异步读/写

如何使用 Beast 库中的 websocket 进行异步读写?我已尝试调整此处Beast 文档中提供的同步写入/读取示例,但以下代码的行为与预期不符。

我期望以下输出:

我懂了 :

代码 :

旁注:总的来说,我对 Boost 库还很陌生,所以我可能弄错了一些基础知识......

0 投票
2 回答
1033 浏览

c++ - 如何在读/写文件的同时进行异步读/写 Beast websockets?

我有我的 C++ 程序,它分叉成两个进程,1(原始)和 2(分叉进程)。

在分叉的进程 (2) 中,它执行执行大量计算的程序 A。

原始进程 (1) 通过重定向到管道的标准输入和输出与该程序 A 通信。

我正在尝试在原始进程 (1) 中向我的代码添加 websocket 连接。我希望我的原始进程能够有效地选择或 epoll 是否有数据要从管道读取到程序 A,或者是否有数据要从 websocket 连接读取。

鉴于野兽 websocket 不是文件描述符,我该如何实现 select 或 epoll 的效果?

0 投票
1 回答
1796 浏览

c++ - 如何将读取处理程序传递给 Beast websocket 的 async_read?

如何将回调传递给async_read?我尝试了以下但它不会编译。我基于修改文档中的代码

0 投票
1 回答
1869 浏览

ubuntu - 如何从 CMake 访问 Beast on Boost 1.66 和 1.67

我正在尝试使用 Beast 制作一个 CMake 项目,并且它已从源代码正确安装/usr/local/include/boost,但我无法让 CMake 找到它。我虽然它可能是一个3.10.2,所以我累了3.11.43.12.0-rc1但都没有工作。有谁知道该怎么做?

环境:Windows CLion 2018.1.5 和 WSL 上的 Ubuntu 18.04LTS。

尝试运行 CMake 时,出现以下错误:

0 投票
1 回答
1121 浏览

c++ - 也接受 http 连接的 boost-beast websocket 服务器

我需要使用可以接受 websocket标准 http 连接的简单异步websocket 服务器来实现。boost beast

我试过这样的事情:

但是当 HTTP 客户端连接时,服务器会错过发送的第一条消息。显然,这不是正确的方法:-)

谁能帮我这个?谢谢

0 投票
1 回答
828 浏览

boost - 如何使用 boost::beast 避免回调地狱?

我正在开发一个我想在其中使用 boost::beast/asio 的应用程序。我需要通过 websocket 连接接收数据并同时向 REST API 发出请求。

在 boost::beast websocket/HTTP 异步客户端示例中,似乎下一个异步操作是在完成处理程序中启动的。这似乎引发了我在 node.js 应用程序中看到的相同的“回调地狱”。

为了避免这种情况,我正在考虑在我的应用程序中使用一个简单的状态机来决定接下来要开始什么操作。我正在考虑在我的应用程序中有一个 while 循环,我在 io_context 上调用 poll() 之后我运行我的状态机代码(例如 switch(state) { ... state = nextState; } )

然而,这可能会创建一个繁忙的循环,其中主线程在不断运行状态机的同时消耗 100% cpu?

我的推理是否正确,使用 post() 之类的东西来排队一个可以推进状态机的函子会更好吗?

0 投票
1 回答
688 浏览

c++ - 如何在 beast::websocket 中读取错误请求的标头?

我有一个应该响应 GET 请求的 websocket 服务器(监听环回接口)。这是我的做法

但我还需要能够处理位置(如localhost:2019/some_location)。

有办法吗?

解决方法:手动读取表头,检查是否升级

0 投票
2 回答
92 浏览

c++ - 调用不带回调的 boost 函数

我正在使用 boost-beast 库进行 websocket 连接。您可以参考此示例了解正在发生的事情。我使用了相同的示例,但更改了一些内容:

  • 将 theon_handshake(beast::error_code ec)分成三个函数A(beast::error_code ec)B(beast::error_code ec)并且C(beast::error_code ec)

  • B()发送二进制数据,A()C()正在发送文本。

  • A()B()作为回调调用和作为回调B()调用C()

现在我被困在我想要这样做的地方:

这是读取功能:

问题:-请在那里检查功能B()和我的问题。任何建议或答案表示赞赏。

0 投票
1 回答
189 浏览

c++ - 将 STL 映射存储到 Boost ConstBufferSequence

我正在尝试将 a 存储std::map<enum, int>在 a 中boost::beast::multi_buffer。到目前为止,我一直在使用boost::asio::buffer_copyandboost::asio::buffer来存储向量和 POD。但是,我找不到存储 STL 映射的方法。

我试过这个:

  1. 有没有办法将 a 存储std::map<enum, int>在 a 中ConstBufferSequence?(因为boost::asio::buffer_copy需要一个)
  2. 如果没有,是否有任何解决方法可以将 a 存储std::map<enum, int>在 a 中boost::beast::multi_buffer

谢谢!

0 投票
1 回答
337 浏览

c++ - Boost Beast 在接受期间操纵 http 响应标头

我想在接受期间操纵发送到 websocket 客户端的 http 响应。

我已经阅读了示例和手册,我可以削减请求,检查它是否是 websocket 升级请求,但我无法操纵响应。

最好让 websocket 库来准备响应,让我将其发送出去,然后接管套接字并从那里开始。