worker的源码里是不是没有消息队列的?

zhouciming

大概看了下worker的源码,感觉Worker似乎并没有消息队列,而是只有消息发送/接收缓冲,大概是1024*1024bye大小,如果这个缓冲满了就处理不了接下来的发送或接收了吧!所以想确认下,是不是没有消息队列的?自己不是100%确定,所以来求证下!

2193 1 0
1个回答

blogdaren

wokerman的IO通信部分没有使用消息队列,但是提供的网络流量控制功能:
当服务端发送速度快于客户端接收速度或者客户端停止接收时,数据会积压至服务端发送缓冲区直至爆满并触发onBufferFull事件【如果此时不加以处理继续发送,那么发送缓冲区爆满超过限值(TcpConnection::$maxSendBufferSize默认1M)则会被丢弃,触发onError事件(如果有的话),并导致send_fail计数加1】,此时服务端应该暂停向客户端发送数据,直至发送缓冲区为空并触发onBufferDrain事件,此时服务端恢复继续向客户端发送。

  • zhouciming 2018-12-26

    谢谢,与我理解基本一致!相当于多了种错误处理,通过onBufferFull或onBufferDrain接口来处理!

年代过于久远,无法发表回答
🔝