使用場(chǎng)景:1.使用javaPNS2_2做的與apns服務(wù)的連接,該連接是長(zhǎng)連接形式,能夠連接成功;2.在向apns服務(wù)發(fā)送消息時(shí)會(huì)對(duì)當(dāng)前連接判斷,使用的是java.net.Socket自帶的isClosed、isOutputShutdown、isInputShutdown 三個(gè)方法進(jìn)行判斷,如果有一個(gè)是false那么關(guān)閉并重新連接。3.發(fā)送完畢后會(huì)獲取當(dāng)前發(fā)送的反饋信息,沒(méi)有錯(cuò)誤反饋。4.測(cè)試的手機(jī)token為有效的,連接apns反饋服務(wù)返回的不可用設(shè)備token為空。問(wèn)題:剛啟動(dòng)服務(wù)或者自己編寫的推送服務(wù)一直處于忙碌狀態(tài)(向apns發(fā)送信息時(shí)間間隔較短)時(shí)手機(jī)設(shè)備可以收到推送,正常。如果較長(zhǎng)時(shí)間(大約1小時(shí)左右)沒(méi)有向apns發(fā)送信息,則會(huì)出現(xiàn)顯示發(fā)送成功但是手機(jī)接收不到推送消息的情況,再次發(fā)送則手機(jī)收到推送(連續(xù)發(fā)送兩次,第一次手機(jī)沒(méi)收到,第二次以后都可以);如果很長(zhǎng)時(shí)間(大約1晚上)沒(méi)向apns發(fā)送信息,則不管發(fā)送多少次手機(jī)都接收不到推送。以上所有情況發(fā)生時(shí),socket的判斷都是連接可用。我一直懷疑長(zhǎng)連接的問(wèn)題,也看網(wǎng)上有人提過(guò),他是每過(guò)一定時(shí)間(半小時(shí)還是一小時(shí)忘記了)就重啟連接。但我覺(jué)得這個(gè)是取巧,也是逼不得已的情況下采取的措施。希望有做過(guò)的人給支支招,或者分析下可能的原因
請(qǐng)問(wèn)在判斷長(zhǎng)連接狀態(tài)方面沒(méi)有什么更好的辦法?
慕姐8265434
2023-04-26 19:15:29
