在微信公眾平台開發者文檔發送被動響應消息的說明里,有如下陳述:
1,微信服務器在五秒內收不到響應會斷掉連接,並且重新發起請求,總共重試三次。
2,假如服務器無法保證在五秒內處理並回復,可以直接回復空串,微信服務器不會對此作任何處理,並且不會發起重試。
魚漁對此進行了測試,針對第一點,結果如下:
一般情況下,五秒內收不到響應,第一次重試請求在5秒后即刻發出,如果五秒內還收不到響應,第二次重試在第一次重試請求15秒后發出,如果五秒內還收不到響應,第三次重試在第二次重試請求15秒后發出,總共三次。
魚漁在測試過程中,第一次出現了4次重試,第4次重試和第3次重試的間隔只有2秒多,但是后續測試都是3次重試。
有一次是微信服務器沒有發送任何消息到我的服務器,也許是微信發現總是有超時請求,暫時停止發送請求。不過這是一度性的,幾分鍾后測試就正常了。
如果響應時間在4秒到5秒之間的臨界區域,微信服務器會發出空的重試,就是請求實體為空,有圖為證:
有請求實體的是這樣的:
注意上圖中的reply信息延時了12秒,超過了5秒,微信已經斷開了鏈接,微信是收不到的這個reply的,這個只是魚漁做了個log,記錄下了返回的reply信息。
針對第二點,測試結果和官方說明吻合,並且后續48小時內,可以通過高級客戶接口,異步回復消息給會話發起者。應該是微信服務器內部記錄了發起者的事件和時間,並以次為依據,判斷是否接受異步推送的客服消息。
-----------------------------------------------------------------------------------------------------------------------------------------
歡迎轉載,但請注明來自魚漁解讀微信公眾平台開發(http://www.cnblogs.com/yidongapi/p/3617877.html),謝謝!
歡迎關注魚漁微信公眾帳號:yidongapi,接收我的最新博客發布消息,歡迎訪問我的個人網站:魚漁微信