问题标签 [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.
c++ - 如何在 boost::beast 上保持 websocket?
我在这里引用了有关 boost::beast websocket-async 的文档。
我在 on_read 函数上删除了 "ws_.async_close(websocket::close_code::normal..." 以避免断开连接。
但是野兽 websocket 通过结束 on_read 断开连接。
c++ - Boost::Beast Websocket 双向流 (C++)
我正在研究使用 Boost::Beast websocket 库来创建异步双向管道以在服务器和客户端之间传递数据。我利用了异步示例中的一些代码(如果需要,我可以稍后发布一些代码,现在无法访问它)。我目前有一个类,它创建了几个运行 SocketListener 的线程。当客户端连接时,它会创建一个 Session shared_ptr 来执行异步读写功能。问题是,这个会话对象只会在客户端向我发送消息时写出来。我正在寻找一种实现,它允许我的服务器按需写入连接到它的所有客户端,并监听来自这些连接的传入数据。
这可能吗?我为此使用了错误的技术吗?我认为这可能实现的另一种方法是拥有一个传入的 websocket 和传出的 websocket。传入将允许客户端删除服务器的配置,传出将仅监视消息队列并在消息可用时执行异步写入。
谢谢!
c++ - 提升野兽 websocket 连接关闭处理程序
我是新手,我正在尝试为 websocket 编写一个简单的聊天应用程序。作为参考,我正在使用网站上的websocket-server-sync示例。
我创建了一个存储 websocket::streams 的全局向量,并在创建 websocket 后的 do_session 方法中将其推送到向量中。
每次我读到一条消息时,我都会从这个向量发送给每个人,所以到目前为止它运行良好。但是,当有人关闭连接时(即使它没有正确关闭,例如互联网连接断开),我想从我的向量中删除流对象。我试图在野兽头中寻找“关闭处理程序”或类似的东西,但我找不到任何东西。有没有办法做到这一点?喜欢:
c++ - 调用不带回调的 boost 函数
我正在使用 boost-beast 库进行 websocket 连接。您可以参考此示例以了解正在发生的事情。我使用了相同的示例,但更改了一些内容:
将 the
on_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()
和我的问题。任何建议或答案表示赞赏。
c++ - 如何使用 boost beast 为 websocket 握手添加自定义标头
如何在与 boost beast 的 WebSocket 协议中发生的第一次握手中发送自定义标头?
我想在我的初始请求“x-custome-id:xxxxx”中使用自定义标头。
c++ - 发送多个同时请求时,单线程异步系统中野兽增强异步 http 客户端的行为
当在单线程异步系统中发出多个同时请求时,beast boost async http客户端如何在c++11中工作?
用例:
我想同时发送多个异步请求,并为每个请求创建新的 http 客户端。当收到任何请求的响应时,我将调用一个回调函数,该函数会在收到响应 1 秒后删除客户端,以避免任何内存泄漏。但是,即使我为每个请求创建了一个新的客户端对象,系统/代码似乎也会在一些随机数量的同时 http 请求之后挂起。野兽加速是否使用了一些共享资源,因为这种暂停看起来像系统处于无限死锁状态。PS:我也尝试评论这个删除块,但系统的行为也是一样的。
以下是 boost 和编译器版本的规格:
提升:稳定 1.68.0
BOOST_BEAST_VERSION 181
clang -v
Thread model: posix
上面的这个函数是一个包装函数,它将为每个请求调用,并且在内部将创建新的 http 异步客户端并在收到响应/错误 1 秒后删除该客户端对象(基本上请求已被处理)。
api - C++ Url 路由(和可能的解析)
我用 Boost Beast 启动了一个 api 服务器。我使用异步 http 服务器。我的目标是做与 Express.js 相同的事情现在我的路线是这样的:
我想这样路由:
route.get("/mypath", callback) ;
但是怎么做呢?
c++ - Unable to find the reason for "Broken Pipe" error while sending continuous data chunks through Beast websocket
I am working on streaming audio recognition with IBM Watson speech to text web service API. I have created a web-socket with boost (beast 1.68.0) library in C++(std 11).
I have successfully connected to the IBM server, and want to send a 231,296 bytes of raw audio data to server in following manner.
Expected Result from IBMServer is :
But I am not getting the desired result: rather the error says "Broken pipe"
Here is my code which is an adaptation of the sample example given in beast library.
Foo.hpp
Foo.cpp
Any suggestions here?
post - 提升野兽样本发送帖子
我收到以下回复,但我不知道如何识别问题。Fiddler 没有捕获任何东西,所以我相信请求没有被发送出去。
HTTP/1.1 411 Length Required
Content-Type: text/html; charset=us-ascii
Server: Microsoft-HTTPAPI/2.0
Date: Wed, 22 May 2019 11:15:04 GMT
Connection: close
Content-Length: 344
我试图遵循我发现的其他示例,但似乎设置正文不再编译。
// error C2679: binary '=': no operator found which takes a right-hand operand of type 'const char *' (or there is no acceptable conversion)
req_.body() = "test";
我正在使用为 x64 编译的 Visual Studio 2017,并将 Boost 链接为 DLL。我从野兽样本开始,让“GET”完美地为我工作。我在让“POST”从野兽客户端工作时遇到问题
`
`
- 我如何查看作为要发送的数据包生成的野兽?
- 如何修复尝试设置正文的编译错误,如其他帖子中所示:
request.body() = "bodytext";
- 有人可以提供一个使用 post 的示例野兽客户端和服务器吗?
c++ - string_view 指向另一个字符串
我正在使用 Boost 1.70 并发现了一个相当令人费解的问题,有时 boost::string_view 似乎指向另一个字符串。
这是创建 boost::string_view 的函数调用,如下所示:
这就是prepareError() 方法,它在真正奇怪的事情发生时被调用。第一个版本在构造字符串变量时使用 message.to_string() :
此 json 变量将包含以下字符串,例如:
这真的很奇怪。在调试器中,消息变量包含一个空字符串。正如您从方法调用中看到的那样,这不应该是该字符串的预期结果。
这是相同的方法,唯一的区别是将消息变量(即 string_view)临时分配给 std::string。
这给出了预期的字符串: