這幾天值班忙的不要不要,人工智能這塊看的都是零零散散,今天就來寫寫小程序的實時通信吧。
小程序端:
//這個是鏈接php
lianjie:function(){ var socketOpen = false //註冊信息 var data = { appid: "77494ad321405fb340e2d1a664850954", sid: "123" } var socketMsgQueue = JSON.stringify(data) console.log(socketMsgQueue) //創建鏈接 wx.connectSocket({ url: "wss://websck.eloeg.wang:20001", }) // wx.onSocketOpen(function (res) { console.log('WebSocket鏈接已打開!') socketOpen = true console.log('數據發送中' + socketMsgQueue) sendSocketMessage(socketMsgQueue) }) function sendSocketMessage(msg) { if (socketOpen) { wx.sendSocketMessage({ data: msg }) } else { socketMsgQueue.push(msg) } } wx.onSocketError(function (res) { console.log('WebSocket鏈接打開失敗,請檢查!') }) wx.onSocketMessage(function (res) { console.log('收到服務器內容:' + JSON.stringify(res)) })
},
//模擬發送數據,由於在創建鏈接時給本身註冊的用戶sid爲:123,發送數據也發送的是給sid爲123的用戶即本身,數據爲ok12html
fasong:function(){ wx.request({ url: 'https://wss.md.eloeg.wang/erweima/fasong.php', method: 'GET', header: { 'content-type': 'application/json' }, data: { sid:'123', data:"ok12" }, success: function (res) { console.log(res) } })
}
效果如圖:
後端的php代碼:web
<?php $appid = '77494ad321405fb340e2d1a664850954'; //填寫socket端的appid $appkey = '****************************'; //填寫socket端的sercret $apiUrl = '*******************';//發送接口 $sid=$_GET["sid"]; $data = $_GET["data"]; //要發送的消息 $signature = md5($appid.$sid.$data.$appkey); $url = $apiUrl.'?appid='.$appid.'&sid='.$sid.'&data='.$data.'&signature='.$signature; $html=file_get_contents($url); echo $html; ?> 朋友幫助弄了個workerman的接口,直接進行調用了。因此看起來很簡單,這個sid是要給用戶進行標記用,要給哪一個用戶發消息,就在發送時將其sid傳送至後臺。