socket closed是什么意思_socket请求
生活随笔
收集整理的這篇文章主要介紹了
socket closed是什么意思_socket请求
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在之前的文章中我們所提到的文件的上傳和下載以及request請求都是基于http請求的。小程序也給我們提供了另一種通訊方式是基于websocket請求的,那么http請求和websocket它們之間的含義以及有什么什么不同呢?下來就讓我們一起來看下吧:
我們可以看到http協議呢是基于TCP/IP通信協議通過萬維網服務器傳輸數據到本地瀏覽器的應用層協議;websocket是由HTML5規范提出的一種在單個TCP連接上進行全雙工通信的應用層協議。在了解了兩者的不同后,讓我們來看下在小程序中是如何通過websocket進行數據傳輸的。
url是服務器的wss接口地址,header表示了http header,protocols表示了子協議數組。下面讓我們通過一個實例來看下吧:
<!--index.wxml> <view class="container"><view class="page-body"><view class="page-section"><view class="weui-cells weui-cells_after-title"><view class="weui-cell weui-cell_switch"><view class="weui-cell__bd">Socket狀態</view><view class="weui-cell__ft"><switch bindchange="toggleSocket" checked="{{isOpen}}"/></view></view><view class="weui-cell"><view class="weui-cell__bd">消息</view><view class="weui-cell__ft">Hello, 小程序!</view></view></view></view><view class="btn-area"><button type="primary" size="40" bindtap="sendMessage" disabled="{{socketStatus != 'connected'}}" loading="{{loading}}">點我發送</button></view></view> </view> const tunnelUrl = require('../../../../../config').tunnelUrlfunction showModal(title, content) {wx.showModal({title,content,showCancel: false}) }function showSuccess(title) {wx.showToast({title,icon: 'success',duration: 1000}) }Page({data: {socketStatus: 'closed',isOpen: false,sendText: 'hello, 小程序'},socketMsgQueue: [],// 注冊連接打開事件registerOpen() {wx.onSocketOpen((res) => {console.log('當前webscoket通道已打開并開始發送數據', res);this.sendAllMessage();this.setData({socketStatus: 'connected',isOpen: true});});},// 注冊接受到websocket消息事件registerReceive() {wx.onSocketMessage(function (res) {console.log('收到服務器內容:' + res.data)})},// 注冊socket出錯事件registerError() {wx.onSocketError((res) => {this.setData({socketStatus: 'closed',isOpen: false})console.log('socket連接出錯,原因是:', res);});},// 切換switch開關toggleSocket: function(e) {if(e.detail.value) {wx.connectSocket({url: tunnelUrl,protocols: ['echo-protocol'],success: (res) => {console.log('打開一個socket連接',res);this.registerOpen();this.registerReceive();this.registerError();}});} else {wx.closeSocket({success: (res) => {console.log('關閉socket連接: ', res);wx.onSocketClose((res) => {console.log('當前socket通道已關閉', res);this.setData({socketStatus: 'closed',isOpen: false});})},fail: (res) => {console.log('關閉socket通道出錯,原因是:', res);},complete: (res) => {console.log('操作完成!')}});}},// 點擊按鈕發送消息sendMessage: function() {let text = this.data.sendText;this.sendSingleMessage(text+Math.random()*100);},// 發送單條websocket消息sendSingleMessage: function(text) {let isOpen = this.data.isOpen;if (isOpen) {wx.sendSocketMessage({data: text})} else {this.socketMsgQueue.push(text)}},// 發送隊列所有websocket消息sendAllMessage: function() {for (var i = 0; i < this.socketMsgQueue.length; i++) {this.sendSingleMessage(this.socketMsgQueue[i])}this.socketMsgQueue = []}})今天的內容就到這里了,我們下期再見。
總結
以上是生活随笔為你收集整理的socket closed是什么意思_socket请求的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spss交叉表分析 + SPSS卡方检验
- 下一篇: python函数调用外部变量_Pytho