websocket和SSE通信示例(無需安裝任何插件)

websocket和SSE通信示例(無需安裝任何插件)

源碼示例(兩種方案任意切換)

data(){return {heartBeatInterval:5000,// 心跳間隔時間,單位為毫秒webSocket:null,heartBeatTimer:null,}
},
mounted() {// this.initWebSocket();//方案1,全雙工通信websocket,部署線上后要使用wss,要求線上是域名且為httpsthis.createSseConnect();//方案2,sse,單工通信(http長連接)},methods:{// sse建立連接createSseConnect(){let self = this;if(window.EventSource){const eventSource = new EventSource(`${this.$sseUrl}/sse/createConnect?clientId=${this.$store.state.user.name}`);eventSource.onmessage = (e) =>{console.log("msg info:", e.data);self.handleMessage(JSON.parse(e.data))};eventSource.onopen = (e) =>{console.log("已建立連接~")};eventSource.onerror = (e) =>{if (e.readyState == EventSource.CLOSED) {console.log("連接關閉");} else if (eventSource.readyState == EventSource.CONNECTING) {console.log("正在重連");} else {console.log('error', e);}};eventSource.close = (e) =>{console.log("連接關閉");};}else{console.log("你的瀏覽器不支持消息通信~")}console.log(" 測試 打印")},handleMessage(data) {this.msgContent = data.messageTitle;this.messageId = data.messageId;this.newMsgCount = data.newInfoCount;if(this.msgContent){this.showMessagePop = true;}},initWebSocket() {this.webSocket = new WebSocket(`${this.$websocketUrl}/websocket/${this.$store.state.user.name}`);this.webSocket.onopen = () => {// 建立連接后開始發送心跳包this.startHeartBeat();};this.webSocket.onmessage = (event) => {// 處理服務器發送的消息this.handleMessage(JSON.parse(event.data))};this.webSocket.onclose = () => {console.log('WebSocket連接已關閉');// 連接關閉后停止心跳包this.stopHeartBeat();   // 可根據需要重新連接// reconnect();};},startHeartBeat() {// 每隔一段時間發送心跳包this.heartBeatTimer = setInterval(() => {if (this.webSocket.readyState === this.webSocket.OPEN) {this.webSocket.send('hello,這是一個心跳包'); // 發送心跳包}}, this.heartBeatInterval);},stopHeartBeat() {// 停止心跳包發送clearInterval(this.heartBeatTimer);},}

注意事項

使用websocket要注意

  1. websocket一段時間后會自動關閉鏈接,所以要定時發送心跳包請求檢測心跳以保證鏈接持續有效
  2. 在vue項目中配置代理時要注意target地址是ws協議的target: 'ws://x.x.x.x:8080',
  3. websocket打包部署線上必須走wss,這就要求線上域名為https請求

使用SSE要注意

1.當確認請求地址無誤,postman也可以請求通,但是唯獨在項目中請求一直pending時,前端可以在devServer中配置compress:false,參數來解決。
2.當本地請求正常,部署到線上之后就一直請求超時,statuscode欄顯示已屏蔽mixed-content,讓后端在nginx配置中加上buffer相關的配置即可

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215062.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215062.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215062.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零開始實現神經網絡(三)_RNN循環神經網絡

參考文章:rnn循環神經網絡介紹 循環神經網絡 (RNN) 是一種專門處理序列的神經網絡。它們通常用于自然語言處理 (NLP) 任務,因為它們在處理文本方面很有效。在這篇文章中,我們將探討什么是 RNN&a…

圖文教程:從0開始安裝stable-diffusion

現在AI繪畫還是挺火,Midjourney雖然不錯,但是對于我來說還是挺貴的。今天我就來安一下開源的AI繪畫stable-diffusion,它的缺點就是對電腦的要求比較高,尤其是顯卡。 話不多說開搞。 訪問sd的github,https://github.com/AUTOMATIC…

〖大前端 - 基礎入門三大核心之JS篇(51)〗- 面向對象之認識上下文與上下文規則

說明:該文屬于 大前端全棧架構白寶書專欄,目前階段免費,如需要項目實戰或者是體系化資源,文末名片加V!作者:哈哥撩編程,十余年工作經驗, 從事過全棧研發、產品經理等工作,目前在公司…

qt-C++筆記之addAction和addMenu的區別以及QAction的使用場景

qt-C筆記之addAction和addMenu的區別以及QAction的使用場景 code review! 文章目錄 qt-C筆記之addAction和addMenu的區別以及QAction的使用場景1.QMenu和QMenuBar的關系與區別2.addMenu和addAction的使用場景區別3.將QAction的信號連接到槽函數4.QAction的使用場景5.將例1修改…

基于單片機智能澆花控制系統設計

**單片機設計介紹,基于單片機智能澆花控制系統設計 文章目錄 一 概要二、功能設計設計思路 三、 軟件設計原理圖 五、 程序六、 文章目錄 一 概要 基于單片機的智能澆花控制系統可以通過水泵、傳感器和單片機等硬件組件實現自動澆水,減輕人工澆花的工作…

【LeeCode】151.翻轉字符串里的單詞

給你一個字符串 s ,請你反轉字符串中 單詞 的順序。 單詞 是由非空格字符組成的字符串。s 中使用至少一個空格將字符串中的 單詞 分隔開。 返回 單詞 順序顛倒且 單詞 之間用單個空格連接的結果字符串。 注意:輸入字符串 s中可能會存在前導空格、尾隨…

Mysql mybatis 語法示例

service package com.ruoyi.goods.service;import java.util.List; import com.ruoyi.goods.domain.GoodsProducts;/*** 商品Service接口* * author ruoyi* date 2023-08-27*/ public interface IGoodsProductsService {/*** 查詢商品* * param ProductID 商品主鍵* return 商…

基于OpenCV+CNN+IOT+微信小程序智能果實采摘指導系統——深度學習算法應用(含python、JS工程源碼)+數據集+模型(三)

目錄 前言總體設計系統整體結構圖系統流程圖 運行環境Python環境TensorFlow 環境Jupyter Notebook環境Pycharm 環境微信開發者工具OneNET云平臺 模塊實現1. 數據預處理1)爬取功能2)下載功能 2. 創建模型并編譯1)定義模型結構2)優化…

Docker與K8s的區別

Docker 和 K8s(Kubernetes)是兩個不同的技術,它們在容器化應用程序的管理和部署方面有著不同的角色和功能。 Docker 是一種容器化平臺,它允許您將應用程序及其所有依賴項打包到一個獨立的、可移植的容器中。Docker 提供了一種輕量…

《PySpark大數據分析實戰》-03.了解Hive

📋 博主簡介 💖 作者簡介:大家好,我是wux_labs。😜 熱衷于各種主流技術,熱愛數據科學、機器學習、云計算、人工智能。 通過了TiDB數據庫專員(PCTA)、TiDB數據庫專家(PCTP…

恢復Django 項目

隨筆記錄 目錄 1. 重建Mysql DB 2. 啟動Django 項目 2.1 確保你的系統上已安裝pip工具。你可以使用以下命令來檢查pip是否已安裝 2.2 安裝Packages 2.2.1 安裝Django 2.2.2 安裝pymysql 2.2.3 安裝 kafka 2.2.4 安裝 requests 2.2.5 安裝simplepro 2.2.6 安裝libjp…

持續集成交付CICD:GitLabCI上傳Nexus制品

目錄 一、實驗 1.GitLabCI上傳Nexus制品 2.優化GitLabCI(引用系統變量) 3.添加if條件判斷項目類型 4.優化GitLabCI(模板類) 二、問題 1.GitLabCI獲取jar文件失敗 2. GitLabCI獲取流水線項目命名空間失敗 3.GItLab Packag…

.NET 8 編寫 LiteDB vs SQLite 數據庫 CRUD 接口性能測試(準備篇)

WebAppDbTest 項目準備 項目準備1、.net cli 創建項目2、nuget 包引用和項目結構2.1、項目添加相關 nuget 包2.2、WebAppDbTest 項目結構 3、項目代碼說明3.1、CSharp/C# 類文件說明3.2、json 配置文件說明 4、項目運行預覽 數據庫 .db 文件準備1、創建 SQLite 數據庫1.1、在 W…

c#讀取CSV文件跟Excel導入成DataTble

1.讀取CSV文件 /// <summary>/// 讀取CSV文件/// </summary>/// <param name"fileName">文件路徑</param>public static DataTable ReadCSV(string fileName){DataTable dt new DataTable();FileStream fs new FileStream(fileName, FileM…

Python---綜合案例

一、系統需求分析 1、需求分析 使用面向對象編程思想完成學員管理系統的開發&#xff0c;具體如下&#xff1a; ① 系統要求&#xff1a;學員數據存儲在文件中 ② 系統功能&#xff1a;添加學員、刪除學員、修改學員信息、查詢學員信息、顯示所有學員信息、保存學員信息及退…

56.windows docker 安裝ES、Go操作ES

文章目錄 一、環境準備1、 docker安裝ES2、啟動容器3、圖像化客戶端工具ElasticSearch-Head 二、Go ES連接與認證1、 連接ES2、配置ES認證 三、索引的增刪改查四、文檔的增刪改創建單個文檔根據文檔id刪除文檔批量刪除文檔批量創建文檔 五、文檔查詢列表查詢精確匹配模糊匹配嵌…

ubuntu18.04配置cuda+cudnn+tensorrt+anconda+pytorch-gpu+pycharm

一、顯卡驅動安裝 執行nvidia-smi查看安裝情況 二、cuda安裝 cuda官網下載cuda_11.6.2_510.47.03_linux.run&#xff0c;安裝執行 sudo sh cuda_11.6.2_510.47.03_linux.run提升安裝項&#xff0c;驅動不用安裝&#xff0c;即第一項&#xff08;Driver&#xff09;&#xff…

如何使用Java在Excel中添加動態數組公式?

本文由葡萄城技術團隊發布。轉載請注明出處&#xff1a;葡萄城官網&#xff0c;葡萄城為開發者提供專業的開發工具、解決方案和服務&#xff0c;賦能開發者。 前言 動態數組公式是 Excel 引入的一項重要功能&#xff0c;它將 Excel 分為兩種風格&#xff1a;Excel 365 和傳統 …

虹科技術 | IO-Link Wireless如何賦能工廠車間邁向無線自動化?

大規模定制、卓越運營和商業智能正在從根本上改變制造業&#xff0c;為了在競爭中立于不敗之地&#xff0c;制造商需要更加靈活、通用、可擴展和具有成本效益的機器和生產線。隨著制造商向工業 4.0 邁進&#xff0c;更好的適應性、更高的吞吐量和更短的停機時間是他們的共同要求…