2

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

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

谢谢!

4

1 回答 1

2

这可能吗?

是的

我为此使用了错误的技术吗?

我认为这可能实现的另一种方法是分别有一个传入的 websocket 和传出的 websocket 和否。

这不是必需的,websocket 流是全双工的。您可以同时阅读和写作。

传出只会监视消息队列并在消息可用时进行异步写入。

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

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

于 2018-06-19T15:50:35.110 回答