環(huán)境:消息推送需要使用長聯(lián)訊尸曼,所以采用websocket
遇見問題:微信開發(fā)者工具可以使用websocket,但是使用手機真機調(diào)試websocket無響應
解決思路:
一.確保websocket調(diào)用api的正確使用順序
二.服務器環(huán)境的搭建以及合法域名的校驗
三.開發(fā)者后臺要配置wss和ip白名單
第一步:確保API的正確調(diào)用
uni.connectSocket({? //發(fā)起鏈接
????????url:'wss://integral.gzyxxy.com:9603',? //websocket鏈接的url地址
????????success:()=>{? //連接成功后的回調(diào)
????????????????uni.onSocketOpen((res)=>{??//監(jiān)聽WebSocket連接打開事件酷愧。
????????????????????????uni.sendSocketMessage({??//發(fā)送給服務器消息。
????????????????????????data:this.ids,
????????????????????????success:(res)=>{? //監(jiān)聽返回消息缠诅。
????????????????????????????????console.log(res)
????????????????????????},
????????????????????????fail: (err) => {
????????????????????????????????console.log(this.ids)
????????????????????????}
? ? ? ? ? ? ? ? ?})
????????????????????uni.onSocketMessage((res)=>{??//接收服務器返回的消息溶浴。
????????????????????????????????????this.items.push(res.data)
????????????????})
????????????})
}
二.服務器搭建以及合法域名的校驗以及wss的配置
1.這里提到的服務器搭建,主要是因為在微信小程序中管引,websocket支持的一定是wss的通信協(xié)議士败,當然也不是說你用ws不行,但是我感覺測試可以褥伴,如果要配置上線的話谅将,還是需要使用wss的!可以在后臺管理界面進行配置
---開發(fā)---開發(fā)設置---服務器域名設置
切記:一個月只有五次的修改機會噩翠!慎重哦
修改成功后戏自,可以打開開發(fā)工具的詳情頁面進行查看,來查看是否配置成功
2.合法域名的校驗
眾所周知擅笔,小程序在開發(fā)過程中,只要你點擊不校驗合法域名屯援,就可以不進行跨域處理猛们,但是如果要求上線,一定要進行配置狞洋,防止出現(xiàn)跨域問題弯淘。然后合法域名也是要求https,需要攜帶證書!
三.會遇到的問題吉懊!
當你配置完所有以后庐橙,你會發(fā)現(xiàn)在開發(fā)環(huán)境下假勿,你是可以使用websocket的,但是當你選擇真機測試的時候态鳖,你會發(fā)現(xiàn)你的websocket失效了转培,你如果打開兩個管理控制臺,你會發(fā)現(xiàn)浆竭,開發(fā)工具的上面浸须,長聯(lián)訊的屬性type:為websocket,但是真機環(huán)境下的長聯(lián)訊的屬性type:為xhr邦泄!
當時我以為是我api調(diào)用的問題删窒,查閱了好多資料,都沒得到解決顺囊!最后在微信開發(fā)社區(qū)里面找到了和我遇見一模一樣問題的人肌索!詢問以后才得知解決辦法!0丁驶社!說實話,解決方法测萎,讓我有點哭笑不得
是不是和我遇到的一樣M龅纭!硅瞧!
四.解決辦法7萜埂!腕唧!
直接上線就可以了或辖,線上環(huán)境就可以成功了!如果覺得直接上線不好枣接!你可以提交為體驗版本即可
綜上所述...websocket在真機上和開發(fā)工具上的不一致颂暇,就能得到解決了