建議看我寫的另外一篇文章
以下原文菠赚,不太成熟,可以不用看了
第一次使用websocket就是需要在vue中去使用他,在網(wǎng)上搜索了很多如何在vue中使用的教程和示例,有些demo過(guò)于簡(jiǎn)單擴(kuò)展性太差,有些存在bug
網(wǎng)上經(jīng)常被搜索到的一個(gè)答案是這個(gè)https://blog.csdn.net/niyuelin1990/article/details/78062139#commentsedit,但是這個(gè)答案中在解決websocket未開(kāi)啟和正在開(kāi)啟狀態(tài)的處理方式是使用setTimeout去假定異步的狀態(tài)惰聂,這個(gè)處理方式是存在問(wèn)題的,于是我在這篇文章的基礎(chǔ)上做出了一些修改咱筛,通過(guò)在onopen事件和onerror事件中處理websocket未開(kāi)啟和正在開(kāi)啟狀態(tài)的數(shù)據(jù)發(fā)送問(wèn)題
目前使用到現(xiàn)在沒(méi)有出現(xiàn)什么問(wèn)題搓幌,復(fù)制即用
<template>
<div class="test">
</div>
</template>
<script>
export default {
name : 'test',
data() {
return {
websock: null,
}
},
created() {
this.initWebSocket();
},
destroyed() {
this.websock.close() //離開(kāi)路由之后斷開(kāi)websocket連接
},
methods: {
initWebSocket(){ //初始化weosocket
const wsuri = "ws://127.0.0.1:8080";
this.websock = new WebSocket(wsuri);
this.websock.onmessage = this.websocketonmessage;
this.websock.onopen = this.websocketonopen;
this.websock.onerror = this.websocketonerror;
this.websock.onclose = this.websocketclose;
},
websocketonopen(){ //連接建立之后執(zhí)行send方法發(fā)送數(shù)據(jù)
let actions = {"test":"12345"};
this.websocketsend(JSON.stringify(actions));
},
websocketonerror(){//連接建立失敗重連
this.initWebSocket();
},
websocketonmessage(e){ //數(shù)據(jù)接收
const redata = JSON.parse(e.data);
},
websocketsend(Data){//數(shù)據(jù)發(fā)送
this.websock.send(Data);
},
websocketclose(e){ //關(guān)閉
console.log('斷開(kāi)連接',e);
},
},
}
</script>
<style lang='less'>
</style>