Vue中使用websocket的正確使用方法

首先寫一個(gè)公共方法?socket.js

functiongetSocket(url, params, callback) {

??let socket;

??if(typeof(WebSocket) === 'undefined') {

????console.log('您的瀏覽器不支持WebSocket');

??} else{

????console.log('您的瀏覽器支持WebSocket');

????// 初始化 WebSocket 對(duì)象,指定要連接的服務(wù)器地址與端口建立連接

????socket = newWebSocket(url);

????// 打開事件

????socket.onopen = function() {

??????console.log('Socket 已打開');

??????socket.send(params);

????};

????// 獲得消息事件

????socket.onmessage = function(msg) {

??????// 發(fā)現(xiàn)消息進(jìn)入, 開始處理前端觸發(fā)邏輯

??????callback(msg, socket);

????};

????// 關(guān)閉事件

????socket.onclose = function() {

??????console.log('Socket 已關(guān)閉');

????};

????// 發(fā)生了錯(cuò)誤事件

????socket.onerror = function() {

??????console.log('Socket 發(fā)生了錯(cuò)誤,請(qǐng)刷新頁(yè)面');

??????// 此時(shí)可以嘗試刷新頁(yè)面

????};

??}

}

export {

??getSocket

};


使用

test.vue

<script>

import {getSocket} from '@/utils/socket.js';

export default{

??data() {

????return{

??????wsData: {}, // 保存 websocket 數(shù)據(jù)對(duì)象

??????form: { // 表單

????????name: '',

????????age: ''

??????}

????}

??},

??beforeDestroy() {

????this.wsData.close(); // 關(guān)閉 websocket

??},

??created() {

????this.getSocketData();

??},

??methods: {

????// 獲取數(shù)據(jù)

????getSocketData() {

??????let params = this.form;

??????getSocket(

????????`ws://path`,

????????JSON.stringify(params),

????????(data, ws) => {

??????????console.log(data, ws);

??????????// 保存數(shù)據(jù)對(duì)象, 以便發(fā)送消息

??????????this.wsData = ws;

????????}

??????);

????},

????// 發(fā)送數(shù)據(jù)

????sendSocketData() {

??????let params = this.form;

??????params.name = 'xx';

??????params.age= '18';

??????this.wsData.send(JSON.stringify(params));

????}

??}

}

</script>

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 建議看我寫的另外一篇文章 js封裝一個(gè)websocket 以下原文,不太成熟,可以不用看了 第一次使用websoc...
    Sven0706閱讀 181,964評(píng)論 19 67
  • 英文文檔,一開始我也是抗拒的,邊翻譯邊看,也就花費(fèi)了1個(gè)小時(shí)基本就閱讀過了,我的英文基礎(chǔ)其實(shí)很差。附上鏈接:鏈接:...
    lonecolonel閱讀 10,402評(píng)論 3 1
  • 原文地址:http://www.ibm.com/developerworks/cn/java/j-lo-WebSo...
    敢夢(mèng)敢當(dāng)閱讀 9,027評(píng)論 0 50
  • 一.WebSocket簡(jiǎn)單介紹 隨著互聯(lián)網(wǎng)的發(fā)展,傳統(tǒng)的HTTP協(xié)議已經(jīng)很難滿足Web應(yīng)用日益復(fù)雜的需求了。近年來(lái)...
    huoyl0410閱讀 5,862評(píng)論 3 2
  • 她二十六了,和男朋友走過熙熙攘攘的街,他扯了下那條粉紅色的卡哇伊裙子,說試試吧。她抿著嘴搖了搖頭。 二十六了,不知...
    既見君子呀閱讀 272評(píng)論 0 0

友情鏈接更多精彩內(nèi)容