微信小程序 網絡API:
wx.connectSocket(OBJECT)
創建一個 WebSocket 連接;一個微信小程序同時只能有一個WebSocket連接,如果當前已存在一個WebSocket連接,會自動關閉該連接,并重新創建一個WebSocket連接。
OBJECT參數說明:
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
| url | String | 是 | 開發者服務器接口地址,必須是HTTPS協議,且域名必須是后臺配置的合法域名 |
| data | Object | 否 | 請求的數據 |
| header | Object | 否 | HTTP Header |
| method | String | 否 | 默認是GET,有效值為: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT |
| success | Function | 否 | 接口調用成功的回調函數 |
| fail | Function | 否 | 接口調用失敗的回調函數 |
| complete | Function | 否 | 接口調用結束的回調函數(調用成功、失敗都會執行) |
示例代碼:
wx.connectSocket({ url:"test.php", data:{ x:"", y:"" }, header:{ 'content-type': 'application/json' }, method:"GET"})wx.onSocketOpen(CALLBACK)
監聽WebSocket連接打開事件
示例代碼:
wx.connectSocket({ url:"test.php"});wx.onSocketOpen(function(res){ console.log("WebSocket連接已打開!")})wx.onSocketError(CALLBACK)
監聽WebSocket錯誤
示例代碼:
wx.connectSocket({ url:"test.php"});wx.onSocketOpen(function(res){ console.log("WebSocket連接已打開!")})wx.onSocketError(function(res){ console.log("WebSocket連接打開失敗,請檢查!")})wx.sendSocketMessage(OBJECT)
通過WebSocket連接發送數據,需要先wx.connectSocket,并在wx.onSocketOpen回調之后才能發送。
OBJECT參數說明:
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
| data | String | 是 | 需要發送的內容 |
示例代碼:
var socketOpen = false;var socketMsgQueue = []wx.connectSocket({ url:"test.php"});wx.onSocketOpen(function(res){ socketOpen = true; for(var i = 0 ; i < socketMsgQueue.length; i++){ sendSocketMessage(socketMsgQueue[i]) } socketMsgQueue = [];})function sendSocketMessage(msg){ if(socketOpen){ wx.sendSocketMessage({ data:msg }); }else{ socketMsgQueue.push(msg) }}wx.onSocketMessage(CALLBACK)
監聽WebSocket接受到服務器的消息事件
CALLBACK返回參數:
| 參數 | 類型 | 說明 |
|---|---|---|
| data | String | 服務器返回的消息 |
示例代碼:
wx.connectSocket({ url:"test.php"});wx.onSocketMessage(function(res){ console.log("收到服務器內容:" + res.data)})wx.closeSocket()
關閉WebSocket連接
wx.onSocketClose(CALLBACK)
監聽WebSocket關閉
wx.connectSocket({ url:"test.php"});//注意這里有時序問題,//如果wx.connectSocket還沒回調wx.onSocketOpen,而先調用wx.closeSocket,那么就做不到關閉WebSocket的目的//必須在WebSocket打開期間調用wx.closeSocket才能關閉wx.onSocketOpen(function(){ wx.closeSocket()})wx.onSocketClose(function(res){ console.log("WebSocket 已關閉!")})感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答