国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

消息發(fā)送失敗重發(fā)如何實現(xiàn)???和大文件斷點續(xù)傳怎么實現(xiàn)???

phpworker2

消息發(fā)送失敗重發(fā)如何實現(xiàn)啊?如何判斷消息發(fā)送失???和大文件斷點續(xù)傳怎么實現(xiàn)???

7860 1 0
1個回答

walkor 打賞

消息失敗重發(fā)
如果要精確判斷每個消息是否發(fā)送到客戶端,服務(wù)端可以將每條消息都存儲起來(mysql等),并且設(shè)置個是否已讀字段??蛻舳耸盏较⒑蠓祷匾粋€確認(rèn)包給服務(wù)端,服務(wù)端把對應(yīng)消息在存儲中置為已讀。

如果鏈接斷開,服務(wù)端會觸發(fā)onClose,這時讀取存儲看下對應(yīng)客戶端的消息數(shù)據(jù)中是否有未確認(rèn)的消息,有的話就是有消息發(fā)送失敗,沒有就是全部發(fā)送成功。

失敗的消息可以在客戶端重新連接服務(wù)端時(登錄權(quán)限驗證時)從存儲中讀取出來,重新發(fā)給客戶端。

注意
TCP的有保證TCP數(shù)據(jù)包按照發(fā)送順序到達(dá)對端的機(jī)制,所以在同一個鏈接上重發(fā)數(shù)據(jù)一般說是沒有意義的。
例如在鏈接1上發(fā)送數(shù)據(jù)A,假如客戶端沒收到,服務(wù)端在鏈接1上又重發(fā)了一次數(shù)據(jù)A,假如第一次發(fā)送的A沒收到,那么第二次發(fā)送的數(shù)據(jù)A也一定收不到。

斷點續(xù)傳
有多種實現(xiàn)方法。比如客戶端告訴服務(wù)端文件md5是什么以及這個數(shù)據(jù)有多大,服務(wù)端將客戶端上傳的數(shù)據(jù)保存到本地文件(md5命名)。如果上傳過程中鏈接斷開,下次客戶端上傳的時候仍然發(fā)送文件md5,服務(wù)端找到本地磁盤對應(yīng)的文件,獲得當(dāng)前磁盤文件大小發(fā)給客戶端,客戶端就知道服務(wù)端接收了多大的數(shù)據(jù),然后客戶端將文件偏移對應(yīng)的位置的數(shù)據(jù)發(fā)送過來即可。

年代過于久遠(yuǎn),無法發(fā)表回答
??