demo中的 longlink_packer.m 类中有方法判断是否是推送(longlink_ispush)还是响应(longlink_identify_isresp),是根据定义的 PUSH_DATA_TASKID 来判断的,默认为0,请问客户端发送给服务器的taskId(应该对应的服务器的seq),是否有可能为0,如果为0 就和服务器主动推送消息时冲突掉了
longlink_packer.m
PUSH_DATA_TASKID
nbnkbykc1#
seq 是起什么作用的呀?可以用来标识消息的唯一性吗?
vdzxcuhz2#
应该不能,这个id是int类型的,应该是每次发送消息,内存分配出来的taskid,客户端需要个根据这个来匹配对应req的rsp,服务器也需要根据这个返回指定的rsp
von4xj4u3#
seq 用于标识本地消息,也是匹配响应属于哪个消息,匹配上后,移除任务。如果超时未响应会断开重连,之后再次重发未响应的消息。
如果杀掉应用程序(内存的任务没了),再次打开重连后,会发生什么事情呢?
@garryyan
edqdpe6u4#
sample中task id是这样来的:
private static AtomicInteger ai = new AtomicInteger(0); taskID = ai.incrementAndGet();
4条答案
按热度按时间nbnkbykc1#
seq 是起什么作用的呀?可以用来标识消息的唯一性吗?
vdzxcuhz2#
应该不能,这个id是int类型的,应该是每次发送消息,内存分配出来的taskid,客户端需要个根据这个来匹配对应req的rsp,服务器也需要根据这个返回指定的rsp
von4xj4u3#
seq 用于标识本地消息,也是匹配响应属于哪个消息,匹配上后,移除任务。如果超时未响应会断开重连,之后再次重发未响应的消息。
如果杀掉应用程序(内存的任务没了),再次打开重连后,会发生什么事情呢?
@garryyan
edqdpe6u4#
sample中task id是这样来的: