Open Willy-J opened 2 years ago
测试发现,客户端通过websocket接收消息的时候是每隔1秒收到一条消息,即使微信在同一时间收到多条消息,客户端也是每隔1s收到一条消息。这个问题在消息数量少的时候没什么影响,但是在群很多的情况下(几百个),产生的消息众多,消息接收的延迟就会非常大。 我不太清楚内部的处理逻辑,猜测是接收消息的时候先将消息存到某个队列,另一个线程每秒轮询队列消息发送给客户端。如果是这样的话,能否缩短轮询间隔,或者将间隔时间做成配置项。 或者将队列改造成类似java中的阻塞队列。 望采纳!
好的,这段时间比较忙,下个版本更新的时候,会优先考虑
看了下公众号放出的源码,向客户端发送消息好像是在 send_msg_to_client_timer 中 ,把下面的 if (kMsgQueue.size() > 0) 换成 while (kMsgQueue.size() > 0) 似乎就可以改善问题
send_msg_to_client_timer
if (kMsgQueue.size() > 0)
while (kMsgQueue.size() > 0)
好的,谢谢
测试发现,客户端通过websocket接收消息的时候是每隔1秒收到一条消息,即使微信在同一时间收到多条消息,客户端也是每隔1s收到一条消息。这个问题在消息数量少的时候没什么影响,但是在群很多的情况下(几百个),产生的消息众多,消息接收的延迟就会非常大。 我不太清楚内部的处理逻辑,猜测是接收消息的时候先将消息存到某个队列,另一个线程每秒轮询队列消息发送给客户端。如果是这样的话,能否缩短轮询间隔,或者将间隔时间做成配置项。 或者将队列改造成类似java中的阻塞队列。 望采纳!