問題描述:
在處理室內數據推送的時候,服務器能正常接收並處理請求,,客戶端也能正常接收消息 但是在每次收到消息后,微信界面會出現,“該公眾號提供的服務出現故障”字樣。
解決思路一:消息去重
根據以往的經驗,首先想到的就是消息處理不及時的問題。於是采用以前的方法進行消息去重,(詳見微信公眾平台開發中重復響應問題),但是改了之后仍然出現 “該公眾號提供的服務出現故障”務的提示。
解決思路二:提高響應速度
其次,想提高一下數據響應速度,以為是查詢數據庫延時 后面直接不查詢數據庫了 直接在服務器端把數據寫死 結果還是出現這個問題
解決思路三:提高響應速度
由於項目是在測試階段,我使用的是ngrok作為內網穿透,由於使用的是免費隧道,會出現帶寬低,不穩定等狀況,然后我們去買了一條vip隧道,重新測試,還是沒有解決這個問題。
解決思路四:
自己用debug跟進 發現dealEvent值為null 意思是返回為微信服務器的值為null 看到這里 自己的敏銳的覺得問題應該出在這,因為模板消息是異步發送的 模板消息的發送地址和微信請求需要的響應地址不一定一樣。因此在業務處理過程中,由於是異步發送模板消息,因此客戶端能正常接收到模板消息 但是當請求方法執行完 繼續往下執行的時候 會返回null 微信服務器接收到這個null響應后 直接提示給用戶服務出現故障 。於是我就把null改成回復“ ”字符串 果然 微信能正常接收到模板消息 並且沒有提示公眾號出現異常 並且 由於返回的空字符串不符合消息響應格式(微信需要的是xml數據包)用戶也不會接收到這個字符。