在作即時通信項目時,除了發送必要的文本消息外,還有語音, 圖片,地圖定位等多種消息類型,其中其餘幾種都是比較好處理的,可是針對圖片處理的時候又有多圖同時發以及單圖發送。在圖片發送中涉及到一下幾點問題:算法
發送單張圖片時就沒有什麼好說的,和發送文本消息同樣,直接發送便可網絡
須要按照選擇的順序進行發送code
圖片發送到對方終端接收的順序也必須是同樣的排序
問題1:
在選擇多圖時, 每次選擇都會其進行排序,由於用戶的操做是沒法預知的。用戶能夠選擇後再取消; 選擇多張後,再取消前面的幾張等等,因此須要實時的對用戶的操做進行排序, 可是不管用戶怎麼操做,在最後點擊發送按鈕之時,__須要按照當前的圖片順序進行發送__ 遞歸
問題2:
在發送消息時, 雖然內部能夠採用的是Socket進行發送,可是因爲圖片大小以及網絡環境等等因素的影響,消息的到達時間並不必定是咱們預期的那樣按照順序依次到達的,因此就不能按照到達時間依次顯示圖片
在接收方處理圖片處理
在全部的消息接收完畢後,針對發送時間,或者在消息體中自定義的標識符按照以前發送方的發送順序進行排序後顯示
在發送方處理終端
在消息發送時,採用遞歸算法進行依次發送,這樣保證發送順序又能保證接收順序
推薦採用遞歸的方式發送消息, 不須要再作額外的處理等工做地圖