收取礼物包问题
KanyShigure opened this issue · 1 comments
KanyShigure commented
1.收取的礼物通讯包会是两个一样的先后发送,导致同一个礼物接收两次,需要一个静态列表检测礼物包是否收过
2.在观众多次点击送礼物连击的时候,会重复接收礼物包导致数量偏多,和上一个问题类似,但收到的不是同一个包,包id不一样
TerryYoung518 commented
我来提供我的思路吧,首先感谢repo作者的开源贡献。
- 对于
sendType
不等于4的情况(一般为1),说明送的是普通礼物,可以直接取groupCount
作为当前送礼行为的礼物数量。 - 对于
sendType
等于4的情况,说明送的是连击礼物,这个时候需要分类讨论:- 若
repeatEnd
等于0,则礼物消息是连击送礼阶段实时产生的消息,comboCount
的数值是 本次连击的累计礼物数量。为什么是累计数量呢?经过观察发现不一定每次连击都会产生消息,比如
comboCount
的数值可能是:1、2、3、5、6这样跳跃增长的,也就是说中途可能会少那么一两次记录,减少了消息量,节省了网络资源,但连击礼物总数是不会错的。 - 若
repeatEnd
等于1,则礼物消息是连击送礼结束后的汇总消息,comboCount
的数值就是本次连击礼物总数。
- 若
注意,以上 普通礼物 和 连击礼物 是我自己定义的名称。
因此,对于连击礼物(sendType
等于4),如果只关心礼物总量,那么只需要考虑repeatEnd
为1的那一个消息就可以了。如果关心消息的实时性,可以维护一个记录连击礼物行为和累计礼物数量的表,计算每次的 comboCount
差值,从而获得近似数量准确的实时礼物消息。
值得注意的是,涉及礼物数量的有 groupCount
repeatCount
comboCount
totalCount
,似乎 groupCount
和comboCount
至少一个数值必为 1
,而repeatCount
和totalCount
的数值均等于groupCount
和comboCount
的最大值(或是乘积)。
如果有错误,欢迎指出。