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

时间:2018-06-19 14:26:43

标签: c++ websocket beast

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

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

谢谢!

1 个答案:

答案 0 :(得分:0)

  

这可能吗?

  

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

  

我虽然可以实现的另一种方法是拥有一个传入的websocket和一个传出的websocket,分别为“否”。

这不是必需的,Websocket流是全双工的。您可以同时读写。

  

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

这是正确的方法,但是您可以在还处理读取操作的同一Session对象中做到这一点。

这是一个连续读取并且还可以写全双工的示例:https://github.com/vinniefalco/CppCon2018