wx.connectSocket:與服務端創建鏈接javascript
wx.sendSocketMessage:向服務端發送數據php
wx.closeSocket:關閉鏈接html
wx.onSocketOpen:成功與服務端創建鏈接後觸發的事件java
wx.onSocketError:與服務端創建鏈接失敗後觸發的事件web
wx.onSocketMessage:服務端返回響應消息後觸發的事件json
wx.onSocketClose:成功關閉WebSocket鏈接後觸發的事件小程序
url:String類型,必選,開發者服務器接口地址,必須是 wss 協議,且域名必須是後臺配置的合法域名瀏覽器
data:Object類型,可選,請求的數據服務器
header:Object類型,可選,HTTPS Header , header 中不能設置 Referer微信
method: String類型,可選,默認是GET,有效值爲: OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
success:Function類型,可選,接口調用成功的回調函數
fail:Function 類型,可選,接口調用失敗的回調函數
complete:Function類型,可選, 接口調用結束的回調函數(調用成功、失敗都會執行)
data:String或ArrayBuffer類型,必選,須要發送的內容
success:Function類型,可選,接口調用成功的回調函數
fail:Function 類型,可選,接口調用失敗的回調函數
complete:Function類型,可選, 接口調用結束的回調函數(調用成功、失敗都會執行)
var socketOpen = falsevar socketMsgQueue = []wx.connectSocket({ url: 'wss://example.com/test.php', // 該Url並不存在,只是爲了演示假設了一個url data:{ x: '', y: '' }, header:{ 'content-type': 'application/json' }, method:"GET"})// 成功創建WebSocket鏈接後,會調用該函數wx.onSocketOpen(function(res) { socketOpen = true for (var i = 0; i < socketMsgQueue.length; i++){ sendSocketMessage(socketMsgQueue[i]) } socketMsgQueue = []})// 向服務端發送數據,若是成功創建了鏈接,則直接發送,不然保存到消息隊列(socketMsgQueue)中function sendSocketMessage(msg) { if (socketOpen) { wx.sendSocketMessage({ data:msg }) } else { socketMsgQueue.push(msg) }}// 接收服務端的響應消息,而後關閉WebSocket鏈接wx.onSocketMessage(function(res) { console.log('收到服務器內容:' + res.data) wx.closeSocket()})// 成功關閉WebSocket鏈接後,會調用該函數wx.onSocketClose(function(res) { console.log('WebSocket 已關閉!')})
<html> <head> <title>測試WebSocket</title> <script> function init() { websocket = new WebSocket("ws://echo.websocket.org/"); websocket.onopen = function() { document.getElementById("output").innerHTML += "<p>> CONNECTED</p>"; }; websocket.onmessage = function(evt){ document.getElementById("output").innerHTML += "<p style='color: blue;'>> RESPONSE: " + evt.data + "</p>"; }; websocket.onerror = function(evt){ document.getElementById("output").innerHTML += "<p style='color: red;'>> ERROR: " + evt.data + "</p>"; }; } function sendMessage(message) { document.getElementById("output").innerHTML += "<p>> SENT: " + message + "</p>"; websocket.send(message); } window.addEventListener("load", init, false);</script> </head> <body> <input onkeypress="if(this.value) {if (window.event.keyCode == 13) { sendMessage(this.value); this.value = null; }}"/> <div id="output"></div> </body></html>
本文分享自微信公衆號 - 極客起源(geekculture)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。