问题标签 [beast]

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 投票
1 回答
532 浏览

c++ - Boost Beast 将带有字节数组的 json 发送到客户端抛出 websocket

我有从字节数组转换为字符串的文件

在这种情况下,我得到 error_code=2 - End of file 然后 error_code=995 I/O 操作...

我如何发送带有转换为字符串的字节数组的 JSON 谢谢!!!

0 投票
0 回答
13 浏览

boost-beast - 在 boost::beast 中获取客户端端口

我们如何提取连接到网络服务器的客户端端口。我已经研究了野兽的例子,但找不到相关的例子。请指点我的例子。

0 投票
1 回答
601 浏览

c++ - 使用 boost::beast 处理大型 http 响应

以下代码用于获取 http 响应消息:

但是,在某些情况下,基于前面的请求,我可以预期响应消息正文将包含大型二进制文件。

因此,我想直接将其读取到文件系统而不是通过buffer变量以避免过度使用进程内存。如何做呢 ?

在 Objective-c 框架NSUrlSession中,有一种简单的方法可以使用NSURLSessionDownloadTask而不是NSURLSessionDataTask,所以我想知道它是否也存在于 boost.js 中。

谢谢 !

0 投票
0 回答
108 浏览

c++ - 如何使用 Boost.Beast 库

我想使用 Boost.Beast

https://github.com/boostorg/beast

我把标题放到C文件中。

样本.c

并编译它。但不工作

如何解决这个问题?请教我。

*稍后添加
我在 Intel 上使用 Ubuntu 20.04

0 投票
2 回答
397 浏览

c++ - Boost- WebSocket 握手被远程对等方拒绝

我正在尝试连接到 Kraken websocket API。但我收到“WebSocket 握手被远程对等方拒绝”错误。

我已经为 websocket 和交易所的 rest api 客户端编写了一个包装类。它与 Binance websocket API 配合得很好,但是 Kraken websocket 连接不成功。

我也尝试过不同类型的 tls(ssl::context ctx_webSocket{ ssl::context::tlsv13_client };) 版本,但结果是一样的。

0 投票
0 回答
30 浏览

c++ - 更改由 Boost::Beast 包装的 unix 域套接字的文件权限

我有一个类型的对象,stream_protocol::acceptor acceptor_;它在我的类 c'tor 中初始化

init 完成后,我希望会创建一个 unix 套接字文件。

但是,当我尝试设置权限时,会出现文件不存在的异常。

实际上,它仅在 async_accept 操作时创建

因此,在一个方向上,我需要拥有套接字文件才能更改其权限。从另一个方向来看,为了创建套接字,应该接受连接,但由于客户端没有访问该文件的权限,所以不能接受。

知道如何解决这种死锁情况吗?

0 投票
0 回答
64 浏览

c++ - websocket 握手在读取时被对等方拒绝

下面的代码失败并出现错误

第一次握手工作正常,写入工作正常,但在阅读时我收到此错误,非常感谢任何线索/帮助。提前致谢:

我的主要困惑是为什么最初的握手没有失败以及导致它在读取时失败的原因。

0 投票
0 回答
68 浏览

c++ - 使用 boost::beast 通过 ssl 连接支持可重用的 http

我正在使用boost::beast以建立基于客户端的 http 会话并发送/接收消息。

我的连接被定义为一个类成员,只要它没有被对等方断开,我就可以重新使用它。

这是调用 myClass c'tor 时我连接到服务器的方式。

这就是我发送按需消息的方式:

我想添加一些异常处理程序以解决以下情况:

  1. 客户端尝试连接时服务器处于脱机状态。所以它应该重试重新连接,直到服务器重新联机。

  2. 服务器重置连接(对等方重置连接)。发生这种情况是由于一段时间未使用连接。所以我想重试并恢复连接。

目前,当其中一种情况发生时,我得到以下异常

所以我知道一般该怎么做,但我不知道怎么做。我应该尝试重新连接还是执行初始化流程中的其他步骤(ssl 握手)

也许有人可以告诉我如何做对吗?

0 投票
0 回答
72 浏览

c++ - 在 boost::beast websocket 实现中使用协程 - 支持并行消息处理

我正在使用安全的 websocket boost::beast 实现,我希望能够在处理当前消息时接收新消息。所以我选择使用协程(带产量的方法)尝试它

  1. 这是我的 websocket 对象:
  1. 这就是我如何调用我的 websocket 侦听器代码
  1. 这就是我的 websocket 处理程序方法的工作原理:注意它分为两部分。

    首先,初始化部分。

    其次,准备在其中读取新消息的 websocket 主循环。


所以我的问题是下面的代码是否适合在处理当前消息时从服务器获取新消息(其中一个sendPostFetchItems或者sendPostDownloadNewVersion可能需要一段时间,因为它们触发了 http post 请求并等待服务器响应)。如果没有,那么我可以假设新消息将排队,等待当前消息句柄完成时的下一次迭代吗?

我的第二个问题是关于 catch 语句,如果这是重试连接的正确方法

0 投票
0 回答
34 浏览

c++ - 回收 boost::beast io_context 执行非网络通信任务

我想扩展基于 io_context 的工作队列,因此它还将执行不涉及网络通信的同步/异步任务……所以这是我定义消费者线程的方式

以下是串行命令的一些用法示例

并平行

现在我的程序有更多的任务而不是网络通信,我想回收那些与 iocontext 相关的线程来操作它们(即将非通信相关的代码放入doSomeStuffBackground和/或doSomeStuffForeground)。我想知道这是否是一个好方法……</p>

另外,我想知道我是否可以定义一些优先于其他任务的优先任务最后,我想知道我是否可以从队列中聚合/合并几个相似的任务。谢谢您的帮助 !