Boost::Beast Websocket 双向流 (C++)

Boost::Beast Websocket Bidirection Stream (C++)

我正在研究使用 Boost::Beast websocket 库来创建异步双向管道以在服务器和客户端之间传递数据。我利用了异步示例中的一些代码(如有必要,我可以稍后 post 一些代码,但现在无法访问它)。我目前有一个 class 创建多个线程 运行 一个 SocketListener。当客户端连接时,它会创建一个 Session shared_ptr 来执行异步读写功能。问题是,这个会话对象只会在客户端向我发送消息时写出。我正在寻找一个允许我的服务器按需写入​​所有连接到它的客户端并监听来自这些连接的传入数据的实现。

这可能吗?我为此使用了错误的技术吗?我认为这可能是可以实现的另一种方法是有一个传入的 websocket 和传出的 websocket。传入将允许客户端删除服务器的配置,而传出将仅监视消息队列并在消息可用时执行异步写入。

谢谢!

Is this possible?

Am I using the wrong technique for this?

没有

The other way I though this may be achievable is to have an incoming websocket and and outgoing websocket, and No respectively.

没必要,websocket 流是全双工的。可以边读边写。

outgoing would just monitor a message queue and do a async write if a message is available.

这是正确的方法,但您可以在处理读取的同一个 Session 对象中执行此操作。

这里有一个连续读取也可以全双工写入的例子:https://github.com/vinniefalco/CppCon2018