acl icon indicating copy to clipboard operation
acl copied to clipboard

在客户端使用fiber时如何同时处理一问一答和服务器主动通知这两种流程

Open wangyongxiao opened this issue 3 years ago • 1 comments

我们在写客户端是通常是一问一答的方式。客户端发送一个请求,服务端响应该请求,这个流程在给出的示例里已有展示。

同时我们还经常面对这样一个问题,就是服务端主动发送信息给客户端,比如订阅的模式,服务端会主动发送客户端感兴趣的消息给客户端。

当这两种方式在同一个连接上时,该如何使用fiber呢,我没有想出一个好的方式来使用fiber,能提供一些思路吗?

wangyongxiao avatar Apr 26 '22 01:04 wangyongxiao

服务端针对每一个客户端可以创建两个协程,一个读协程,一个写协程,读协程负责阻塞式从客户端读数据,写协程负责向客户端写数据,写协程维护一个发送队列(其它协程往里面放数据)并从队列中阻塞式读数据,然后再将数据发给客户端,可以参考例子:lib_fiber/samples/chat/server/main.cpp

zhengshuxin avatar Apr 26 '22 08:04 zhengshuxin