今天项目产生了bug,解决后发现了bug产生的原因:
由于客户端会进行socket消息的处理,服务端负责消息的发送。所以如果客户端处理消息“慢”,或者服务端发送消息“快”,则会导致客户端接收消息的时候会将那些未处理的正在队列中排队的消息都接收过来连成一条消息,导致信息处理出错。
这个时候就要求我们接收的时候不仅要看消息包头,还要看消息中的消息长度信息。
下面这个消息就包括两个包头(红色)和两个消息长度的信息(绿色)
今天项目产生了bug,解决后发现了bug产生的原因:
由于客户端会进行socket消息的处理,服务端负责消息的发送。所以如果客户端处理消息“慢”,或者服务端发送消息“快”,则会导致客户端接收消息的时候会将那些未处理的正在队列中排队的消息都接收过来连成一条消息,导致信息处理出错。
这个时候就要求我们接收的时候不仅要看消息包头,还要看消息中的消息长度信息。
下面这个消息就包括两个包头(红色)和两个消息长度的信息(绿色)