vueでSockJSを使用してwebSocket通信およびプラグインを実現
2481 ワード
Vue+WebSocket実現ページリアルタイムリフレッシュ長接続最近vueプロジェクトはデータリアルタイムリフレッシュを行い、折れ線図は毎秒再描画し、データは0.5秒ごとにリフレッシュし、はっきり言えばリアルタイムリフレッシュで、データ量が大きいため、タイマーでページがしばらく滞在すると詰まってしまうと推定します.バックグラウンドの人と討論した後、h 5の新しいWebSocketを使ってデータのリアルタイム展示を実現し、過程と出会った問題を記録することにした.注意:ページのリフレッシュ長接続は閉じられますが、実際には現在のページに入って長接続を確立する目的は、ページがF 5でリフレッシュされず、すべてのデータが自動的にリアルタイムでリフレッシュされ、F 5のブラシページを往復すると意味がありません.コード:sockjs-clientとstompjsを先にインストール
npm install sockjs-client
npm install stompjs
import SockJS from 'sockjs-client';
import Stomp from 'stompjs';
export default {
data(){
return {
stompClient:'',
timer:'',
}
},
methods:{
initWebSocket() {
this.connection();
let that= this;
// , ,
this.timer = setInterval(() => {
try {
that.stompClient.send("test");
} catch (err) {
console.log(" : " + err);
that.connection();
}
}, 5000);
},
connection() {
//
let socket = new SockJS('http://10.10.91.4:8081/ws');
// STOMP
this.stompClient = Stomp.over(socket);
// ,
let headers = {
Authorization:''
}
// websocket
this.stompClient.connect(headers,() => {
this.stompClient.subscribe('/topic/public', (msg) => { // topic
console.log(' ')
console.log(msg); // msg.body
},headers);
this.stompClient.send("/app/chat.addUser",
headers,
JSON.stringify({sender: '',chatType: 'JOIN'}),
) //
}, (err) => {
//
console.log(' ')
console.log(err);
});
}, //
disconnect() {
if (this.stompClient) {
this.stompClient.disconnect();
}
}, //
},
mounted(){
this.initWebSocket();
},
beforeDestroy: function () {
// ,
this.disconnect();
clearInterval(this.timer);
}
}