為何有 HTTP 協議還需要 WebSocket ?
Http協議 有個缺陷:通信只能由客戶端發起。舉例來說,我們想了解今天的天氣,只能是客戶端向服務器發出請求,服務器返回查詢結果。HTTP 協議做不到服務器主動向客戶端推送信息。(單向請求)注定了如果服務器有連續的狀態變化,客戶端要獲知就非常麻煩。我們只能使用"輪詢":每隔一段時候,就發出一個詢問,了解服務器有沒有新的信息。最典型的場景就是聊天室。輪詢的效率低,非常浪費資源(因為必須不停連接,或者 HTTP 連接始終打開)。因此,工程師們一直在思考,有沒有更好的方法。WebSocket 就是這樣發明的。
WebSocket 最大特點:
服務器可以主動向客戶端推送信息,客戶端也可以主動向服務器發送信息,是真正的雙向平等對話,屬於服務器推送技術的一種。
微信小程序中的應用:
1、頁面加載時,建立連接,
onLoad: function (option) {
wx.connectSocket({
url: '' , //此處開發者服務器接口地址
})
}
2、監聽 WebSocket 接收到服務器的信息 : onSocketMessage()
onLoad: function (option) {
wx.connectSocket({
url: '' , //此處開發者服務器接口地址
})
wx.onSocketMessage(function (data) {
console.log(data)
}
}
3、在發送事件中,wx.sendSocketMessage(OBJECT)
send: function (){
wx.sendSocketMessage({
data: JSON.stringify(
{
"type": "message",
"data": { "touser": _This.data.reUnionid, "content": sendValue }
}),
success: function (e) {
console.log(e)
},
fail: function (e) {
console.log(e)
},
complete: function (e) {
console.log(e)
}
}
}