起因:公司以前小程序推送架構為:小程序-》接口-》后台-》socket-》機頂盒client-》socket-》后台-》接口-》小程序,一系列接口才得到推送成功或者失敗,推送周期時間長,受網速影響較大,有時候各省份組播網、dns、網絡抖動之類的還會導致推送失敗。
解決思路:小程序最近出的udpSocket(只能IDE調試,真機調試需上線),通過小程序和機頂盒client建立局域網通訊,不受外部因素影響,推送效率極大提高,不過不知道機頂盒的IP,需要通過mdns獲取,或者通過遍歷x 從0到255:192.168.x.255、10.1.x.255、10.0.x.255等頻段即可覆蓋絕大部分路由器廠商,其中最后一個255為廣播預留頻段。
代碼:機頂盒端不會寫,小程序端需要自己封裝個udpSocket對象,內部實現init、match(scan)、auth、heartbeat、send、close,全局初始化只需一個socket就行了,因為udp特性無連接的傳輸,並不需要斷線重連操作,心跳包heartbeat也可以不發,看機頂盒端業務需要了。出於安全性考慮就不貼代碼了。
mdns注意:
_http._tcp.不可更改,不然真機調試是可以的,但上線后是不行的,應該是tx官方基礎庫相關bug