# websoket
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。WebSocket 可以在浏览器和服务器之间建立实时的双向通信,相比传统的 HTTP,有更低的延迟和更高的效率。
WebSocket 在建立连接时,需要进行握手协议,握手过程的 header 信息显示 WebSocket 支持的协议。客户端请求建立 WebSocket 连接时,请求头部包含了 Upgrade 和 Connection,服务器端返回的头部信息中也包含了 Upgrade 和 Connection。
客户端和服务器端使用一致的 WebSocket 生命周期管理,通信效率高,性能优越,操作简单。
# WebSocket 在小程序中的应用
在小程序开发中,可以利用微信开发者工具提供的模拟 websocket 功能完成初步的开发,同时在实际项目中需要使用到后端接口的支持,可以使用 Springboot 及 WebSocket 包括STOMP的技术。
使用微信小程序中的 WebSocket,在前端中通过JS提供的 WebSocket 接口来建立 WebSocket 连接,并通过 WebSocket 接口提供的方法向服务器发送消息或者接收服务器下发的消息。使用 WebSocket 接口发送消息时,调用 send() 方法,使用 onmessage() 方法接收消息。
# 代码演示
import { webSocket } from 'm-miniCommonSDK/index'
//连接websocket
function initWebsocket() {
return new Promise((resolve, reject) => {
let params = {
src_token: 1000,
token: token,
appId: appid,
req: getReqId(),
device_id: device_id,
reset: 0,
offset: 0,
client_type: 'ios',
}
const url = url,
gloabalWebSocket = new webSocket({
heartCheck: true,
isReconnection: true,
initWebSocketObj: {
url: url,
success(res) {
console.log(res, 'initWebSocket res success')
resolve(res)
},
fail(err) {
reject(err)
console.log(err, 'initWebSocket res fail')
},
},
})
})
}
//获取设备推送信息
function receiveSocketMessage(callback) {
return new Promise((resolve) => {
gloabalWebSocket &&
gloabalWebSocket.onReceivedMsg((result) => {
resolve(result)
callback(result)
})
})
}
//关闭websoket连接
function closeWebsocket() {
gloabalWebSocket && gloabalWebSocket.closeWebSocket()
}