在作即时通信项目时,除了发送必要的文本消息外,还有语音, 图片,地图定位等多种消息类型,其中其余几种都是比较好处理的,可是针对图片处理的时候又有多图同时发以及单图发送。在图片发送中涉及到一下几点问题:算法
发送单张图片时就没有什么好说的,和发送文本消息同样,直接发送便可网络
须要按照选择的顺序进行发送code
图片发送到对方终端接收的顺序也必须是同样的排序
问题1:
在选择多图时, 每次选择都会其进行排序,由于用户的操做是没法预知的。用户能够选择后再取消; 选择多张后,再取消前面的几张等等,因此须要实时的对用户的操做进行排序, 可是不管用户怎么操做,在最后点击发送按钮之时,__须要按照当前的图片顺序进行发送__ 递归
问题2:
在发送消息时, 虽然内部能够采用的是Socket进行发送,可是因为图片大小以及网络环境等等因素的影响,消息的到达时间并不必定是咱们预期的那样按照顺序依次到达的,因此就不能按照到达时间依次显示图片
在接收方处理图片处理
在全部的消息接收完毕后,针对发送时间,或者在消息体中自定义的标识符按照以前发送方的发送顺序进行排序后显示
在发送方处理终端
在消息发送时,采用递归算法进行依次发送,这样保证发送顺序又能保证接收顺序
推荐采用递归的方式发送消息, 不须要再作额外的处理等工做地图