WebSocket的使用以和原理
一.WebSocket的介绍
- WebSocket是HTML5提供的一种在单个TCP连接进行的全双工通讯的协议。
- WebSocket API中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就可以数据互相传输。
- WebSocket最大的特带你介绍服务器可以主动向客服端推送消息,客服端也可以主动向服务器发送信息,是真正的双向平等对话。
- WebSocket使得客服端和服务器之间的数据交换变得更加简单,允许服务端主动向客服端推送数据。只需要完成一次握手,两者就可以创建持久性的连接,并进行双向数据传输。
二.为什么要使用WebSocket
可能很多人会说有HTTP协议为什么要用这个,因为HTTP通信只能由客服端发起,HTTP协议做不到服务器主动向客服端推送信息。
三.WebSocket事件
四.WebSocket方法
五.WebSocket的使用
1.封装工具类在utils创建socket.js
-
/**
-
* @param { String } url WebSocket连接地址
-
* @param { Object } heartbeatParams 心跳参数
-
*/
-
export default class Socket {
-
constructor (url, heartbeatParams = null) {
-
if (typeof WebSocket === 'undefined') {
-
console.warn('您的浏览器不支持websocket')
-
} else {
-
// 实例化socket
-
const { host, protocol } = window.location
-
const webSocketServe = `${protocol === 'https:' ? 'wss' : 'ws'}://${host}`
-
this.socket = new WebSocket(webSocketServe url)
-
this.open()
-
this.error()
-
this.heartbeatParams = heartbeatParams
-
}
-
}
-
-
open () {
-
this.socket.onopen = e => {
-
console.log('websocket连接成功')
-
if (e.target.readyState === 1) {
-
this.startHeartBeat()
-
}
-
}
-
}
-
-
error () {
-
this.socket.onerror = err => {
-
console.error(err)
-
}
-
}
-
-
close () {
-
this.socket.onClose = e => {
-
console.log('WebSocket已断开')
-
}
-
this.socket.close()
-
}
-
-
startHeartBeat () {
-
setInterval(() => {
-
const obj = {
-
...this.heartbeatParams,
-
timestamp: Date.now()
-
}
-
this.socket.send(obj)
-
}, 1800000)
-
}
-
}
2.再在api下创建一个webSocketRequest.js用于存放多个请求地址
-
export const WebSocketApi = {
-
web1: '地址.....', //这样的好处就是写多个导出
-
.........
-
}
3.在需要的页面导入
-
// 使用
-
initSocket() {
-
const socketInstance = new Socket(
-
WebSocketApi.web1,
-
"heart"
-
);
-
const { socket } = socketInstance;
-
socket.onmessage = (e) => {
-
const eventInfoList = JSON.parse(e.data);
-
};
-
this.$once("hook:beforeDestroy", () => { //页面销毁之前关闭
-
socket.close();
-
});
-
},
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgekhgg
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01