国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue2 封裝 webSocket 開箱即用

這篇具有很好參考價值的文章主要介紹了vue2 封裝 webSocket 開箱即用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

第一步:

? ?下載 webSocket?

npm install vue-native-websocket --save

第二步:

? 需要在 main.js 中 引入

import websocket from 'vue-native-websocket';
Vue.use(websocket, '', {
    connectManually: true, // 手動連接
    format: 'json', // json格式
    reconnection: true, // 是否自動重連
    reconnectionAttempts: 5, // 自動重連次數(shù)
    reconnectionDelay: 2000, // 重連間隔時間
});

?第三步:

? ? 封裝相關(guān)的連接和斷開

?vue2 封裝 webSocket 開箱即用,websocket,vue.js,網(wǎng)絡(luò)協(xié)議,前端,前端框架,javascript,uni-app

?相關(guān)代碼?。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。?/p>

const socketService = {
    socket: null,
    init(username) {
        if (typeof WebSocket === "undefined") {
            alert("您的瀏覽器不支持socket");
        } else {
// ws://10.244.11.117:8089/dashboard/websocket/
            let path = "你的ws WebSocket 地址" + username; // 請求路徑
            this.socket = new WebSocket(path);
            this.socket.onopen = this.open.bind(this);
            this.socket.onerror = this.error.bind(this);
            this.socket.onmessage = this.getMessage.bind(this);
        }
    },

    open() {
        console.log("socket連接成功");
    },

    error() {
        console.log("連接錯誤");
    },
  //這里我判斷了 是不是  JSON  (要和后端定一下結(jié)構(gòu)類型) (二選一)
    getMessage() {
        return new Promise((resolve, reject) => {
            this.socket.onmessage = (msg) => {
                console.log(msg.data);
                // 利用promise 返回出去結(jié)果
                if (msg.data != '連接成功' && JSON.parse(msg.data)) {
                    const data = JSON.parse(msg.data);
                    resolve(data); // 將數(shù)據(jù)傳遞給調(diào)用者
                }

                // this.scrollInstance.refresh(); // 手動刷新滾動效果

            };
        });
        // this.scrollInstance.refresh(); // 手動刷新滾動效果
    },
  // 也可以這樣寫 start (二選一)
	getMessage() {
		if (this.messageCallback) {
			this.socket.onmessage = (msg) => {
				this.messageCallback(msg.data); // 調(diào)用回調(diào)函數(shù),并傳遞消息數(shù)據(jù)
			};
		}
	},
  // 也可以這樣寫 end
  
    send(params) {
        if (this.socket) {
            this.socket.send(params);
        }
    },

    close() {
        console.log("socket已經(jīng)關(guān)閉");
    }
};
//最后導(dǎo)出
export default socketService;

?第四步:?

引入使用

vue2 封裝 webSocket 開箱即用,websocket,vue.js,網(wǎng)絡(luò)協(xié)議,前端,前端框架,javascript,uni-app

//路徑是自己的啊
import socketService from "../sokect/index";

vue2 封裝 webSocket 開箱即用,websocket,vue.js,網(wǎng)絡(luò)協(xié)議,前端,前端框架,javascript,uni-app

 mounted() {
      // 調(diào)用
     this.startSocket();
  },
 methods: {

// 針對性用啊  和上方一一對應(yīng)的
    async startSocket() {

      // 這里是 username  
      socketService.init("warning-all");
      try {
        const msg = await socketService.getMessage();
          //打印出來 服務(wù)器給我的信息
         console.error(JSON.parse(msg.data) );
      } catch (error) {
        console.error("Error receiving message:", error);
      }
    },

  }

// 針對性用啊    和上方一一對應(yīng)的 感覺都差不多
 async startSocket() {
			socketService.init('warning-all');
			try {
				const msg = await new Promise((resolve) => {
					socketService.messageCallback = resolve; // 設(shè)置回調(diào)函數(shù),以便獲取消息數(shù)據(jù)
				});
				console.log('推送消息:', msg);
				// 在這里處理你的推送消息
			} catch (error) {
				console.error('Error receiving message:', error);
			}
		}

到這步接收信息已經(jīng)OK了(記得和后端配合)


?

?使用?uni.connectSocket 進行連接

	data() {
		return {
			title: [],
			reconnectInterval: 5000
		};
	},

startSocket() {
			this.socket = uni.connectSocket({
				url: 'ws://yapi.care-bay.com/websocket/12584',
				success: () => {
					console.log('WebSocket連接已打開');
				},
				fail: (error) => {
					console.log('WebSocket連接出錯', error);
					setTimeout(() => {
						console.log('嘗試重新連接');
						this.startSocket();
					}, this.reconnectInterval);
				}
			});

			this.socket.onMessage((event) => {
				this.title.push(event.data);
				console.log('Received message:', event.data);
				// 在這里處理收到的消息
			});

			this.socket.onClose(() => {
				console.log('WebSocket連接已關(guān)閉');
				setTimeout(() => {
					console.log('嘗試重新連接');
					this.startSocket();
				}, this.reconnectInterval);
			});
		}

?發(fā)送消息?vue-native-websocket

?第一步:按照我上面的步驟走完之后,發(fā)送信息的結(jié)果(也就是參數(shù)-和后端商量好需要哪些)

?第二步:?上代碼?文章來源地址http://www.zghlxwxcb.cn/news/detail-634611.html

import socketService from '../../../sokect/index'; //(自己的路徑?。?huoqu() {
			if (!this.textarea) {
				this.$message({
					message: '請?zhí)顚懟貜?fù)的內(nèi)容,謝謝',
					type: 'warning'
				});
				return;
			}
			// 構(gòu)建包含所需數(shù)據(jù)的 JSON 對象 --后端商量好的參數(shù) 需要發(fā)送的 我這邊根據(jù)自己的需要                      
            //定是 JSON形式的 
			const messageData = {
				nurseId: this.nurseIds,
				conversationId: this.conversationIds
			};
			if (this.stauts) {
				messageData['keyword'] = this.textarea;
			} else {
				messageData['linkUrl'] = this.textarea;
			}
			// 將 JSON 對象轉(zhuǎn)換為字符串
			const messageString = JSON.stringify(messageData);
			console.log('messageData', messageString);
			// 發(fā)送消息---這邊是發(fā)送信息的主要動作----OK
			socketService.send(messageString);
			// 發(fā)送成功之后 刪除
			this.textarea = '';
	 
		},

到了這里,關(guān)于vue2 封裝 webSocket 開箱即用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue2使用webSocket雙向通訊

    vue2使用webSocket雙向通訊

    基于webSocket實現(xiàn)雙向通信,使用webworker保持心跳。 由于瀏覽器的資源管理策略會暫?;蛳拗颇承┵Y源的消耗,導(dǎo)致前端心跳包任務(wù)時效,后端接收不到webSocket心跳主動斷開,因此需要使用webworker保持心跳 引入webworker vue.config配置webworker 新增websocket.js創(chuàng)建websocket單例 websocket工

    2024年04月22日
    瀏覽(18)
  • VUE Websocket封裝

    1.Websocket文件封裝 在utils文件夾下面新建websocket.js文件 封裝中包括websocket初始化,向后端發(fā)送消息,前端接受消息,心跳檢測,關(guān)閉websocket等功能 2.websocket.js引用

    2024年02月12日
    瀏覽(17)
  • 前端實現(xiàn)websocket通信講解(vue2框架)

    前端實現(xiàn)websocket通信講解(vue2框架)

    前言 :最近接到的需求是前端需要實現(xiàn)一個全局告警彈窗,如果使用ajax請求http接口只能用定時器定時去請求是否有告警,這樣既消耗資源,又不能實時監(jiān)測到告警信息。所以這個時候就可以采用websocket來實現(xiàn)通信,因為websocket不用請求一次才響應(yīng)一次,它可以實現(xiàn)服務(wù)器主

    2024年02月12日
    瀏覽(24)
  • vue封裝和使用websocket

    最近做了一個數(shù)據(jù)大屏的項目,使用了websocket來實現(xiàn)數(shù)據(jù)實時更新的需求,簡單記錄分享一下。 1、WebSocket協(xié)議是基于TCP的一種新的網(wǎng)絡(luò)協(xié)議,允許服務(wù)端主動向客戶端推送數(shù)據(jù),實現(xiàn)全雙工通信。 2、在WebSocket API中,瀏覽器和服務(wù)器只需要完成一次握手,兩者之間就直接可

    2024年02月06日
    瀏覽(15)
  • WebSocket全棧搭建(Java + Vue2) 上

    路途漫漫,行則將至 一般來講,我們傳統(tǒng)的前后端分離設(shè)計下,前后端通訊一般都是前端發(fā)送一個http請求,之后后端處理,然后返回給前端,這樣的設(shè)計下,其實就是類似于一種單工的通信模式,這種模式下可能無法滿足一些特定的場景: 比如我們存在一個后臺的定時任務(wù)

    2024年01月17日
    瀏覽(24)
  • websocket實現(xiàn)聊天室(vue2 + node)

    websocket實現(xiàn)聊天室(vue2 + node)

    需求分析如圖: 搭建的項目結(jié)構(gòu)如圖: 前端步驟: vue create socket_demo (創(chuàng)建項目) views下面建立Home , Login組件 路由里面配置路徑 Home組件內(nèi)部開啟websocket連接 前端相關(guān)組件代碼: Login組件 Home組件 router/index.js 后端步驟: 在項目外層創(chuàng)建server文件夾(src目錄同級) npm init -y創(chuàng)建

    2024年01月22日
    瀏覽(103)
  • 在vue3中封裝使用WebSocket

    上篇文章記錄了如何在日常開發(fā)過程中引入并使用websocket連接,但是在后續(xù)的開發(fā)過程中發(fā)現(xiàn)之前的寫法有點問題,比如說多次引用連接會共用一個心跳,如果一個連接關(guān)掉了,后續(xù)其他的連接可能被一起關(guān)掉等等的bug。 所以在這篇文章里針對上篇文章提供的方法進行改進,

    2024年02月07日
    瀏覽(15)
  • vue3:websocket的封裝與使用

    前言:vue3+pinia項目 1.引入ws 2.新建websocket.js類 3.新建一個pinia?Store類 4.頁面中使用

    2024年02月02日
    瀏覽(26)
  • SpringBoot和Vue2集成WebSocket,實現(xiàn)聊天室功能

    springboot集成websocket實現(xiàn)聊天室的功能。如有不足之處,還望大家斧正。

    2024年01月23日
    瀏覽(27)
  • 基于Vue3封裝一個好用的Websocket

    在Vue3中使用Websocket可以讓我們輕松地實現(xiàn)實時數(shù)據(jù)傳輸。為了方便使用,我們可以封裝一個好用的Websocket類。 首先我們需要安裝 ws 庫來處理Websocket連接,使用以下命令進行安裝: 我們可以新建一個 websocket.js 文件,在其中定義一個 Websocket 類,代碼如下: 以上代碼中,我們

    2024年02月04日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包