acl
acl copied to clipboard
在客户端使用fiber时如何同时处理一问一答和服务器主动通知这两种流程
我们在写客户端是通常是一问一答的方式。客户端发送一个请求,服务端响应该请求,这个流程在给出的示例里已有展示。
同时我们还经常面对这样一个问题,就是服务端主动发送信息给客户端,比如订阅的模式,服务端会主动发送客户端感兴趣的消息给客户端。
当这两种方式在同一个连接上时,该如何使用fiber呢,我没有想出一个好的方式来使用fiber,能提供一些思路吗?
服务端针对每一个客户端可以创建两个协程,一个读协程,一个写协程,读协程负责阻塞式从客户端读数据,写协程负责向客户端写数据,写协程维护一个发送队列(其它协程往里面放数据)并从队列中阻塞式读数据,然后再将数据发给客户端,可以参考例子:lib_fiber/samples/chat/server/main.cpp