WebSocket連接的例子

// 初始化WebSocket連接
const initWebSocket = () => {console.log("初始化鏈接中...")const websocketUrl =`ws://61.54.84.16:9090/`;// WebSocket服務器地址websocket = new WebSocket(websocketUrl)//使用真實的webscket// websocket = new MockWebSocket(websocketUrl);// 使用模擬的WebSocket文件websocket.onopen = () => {console.log('WebSocket連接已建立', websocket)// 發送心跳消息保持連接setInterval(() => {if (websocket.readyState === 1) {websocket.send(JSON.stringify({type: 'ping'}));}}, 30000);}websocket.onmessage = (event) => {try {console.log('接收到WebSocket數據:', event)const data = JSON.parse(event.data)handleWebSocketData(data)} catch (error) {console.error('解析WebSocket數據失敗:', error)}}websocket.onclose = () => {console.log('WebSocket連接已關閉')// 5秒后嘗試重連setTimeout(initWebSocket, 5000)}websocket.onerror = (error) => {console.error('WebSocket連接錯誤:', error)}
}// 處理WebSocket接收到的數據
const handleWebSocketData = (msg) => {console.log('處理WebSocket數據:', msg)
}

模擬webscket傳輸數據的過程

mockWebScoket.ts

// 模擬WebSocket對象(用于演示,實際項目中應連接真實服務器)
// 其他頁面引入
//  import MockWebSocket from './mockWebScoket';
// 調用
// const ws = new MockWebSocket('ws://example.com/ws');
// mock返回的數據
// currentNumber:"A015"
// department:"婦科診區"
// waitingQueue: ['A016', 'A017', 'A018', 'A019', 'A020', 'A021', 'A022', 'A023', 'A024', 'A025']export class MockWebSocket {static CONNECTING = 0;static OPEN = 1;static CLOSED = 3;static DEPARTMENTS = ["內科診區", "外科診區", "兒科診區", "婦科診區", "眼科診區"];constructor(url) {this.url = url;this.readyState = MockWebSocket.CONNECTING;this.onopen = null;this.onmessage = null;this.onclose = null;this.onerror = null;this.mockInterval = null;//默認觸發// 模擬連接過程setTimeout(() => {// 模擬連接成功this.readyState = MockWebSocket.OPEN;if (this.onopen) {this.onopen(new Event('open'));}// 開始發送模擬數據this.startMockData();}, 500);}send(data) {if (this.readyState !== MockWebSocket.OPEN) {console.warn("WebSocket is not open. Current state:", this.readyState);return;}console.log('發送數據:', data);}close() {this.readyState = MockWebSocket.CLOSED;if (this.onclose) {this.onclose(new CloseEvent('close'));}if (this.mockInterval) {clearInterval(this.mockInterval);this.mockInterval = null;}}startMockData() {console.log("進入mock的數據")if (this.mockInterval) {clearInterval(this.mockInterval);}let counter = 0;const department = MockWebSocket.DEPARTMENTS[Math.floor(Math.random() * MockWebSocket.DEPARTMENTS.length)];this.mockInterval = setInterval(() => {counter = (counter % 50) + 1;const currentNumber = `A${counter.toString().padStart(3, '0')}`;const waitingQueue = [];for (let i = 1; i <= 10; i++) {const nextNum = (counter + i) <= 50? counter + i: (counter + i) % 50 || 50;waitingQueue.push(`A${nextNum.toString().padStart(3, '0')}`);}//這是傳輸過去的數據const data = {currentNumber:currentNumber,department: department,waitingQueue: waitingQueue};if (this.onmessage) {this.onmessage({data: JSON.stringify(data)});}}, 15000);}
}

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

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

相關文章

c++之指針和引用

一 使用場景 C++ 什么時候使用指針?什么時候使用引用?什么時候應該按值傳遞?_引用什么時候用比較好-CSDN博客 只使用傳遞過來的值,而不對值進行修改 需要修改傳遞過來的值 內置數據類型 按值傳遞(小型結構) 指針傳遞 數組 指針傳遞 指針傳遞 結構 指針或引用(較大的結構…

pytorch學習筆記-模型訓練、利用GPU加速訓練(兩種方法)、使用模型完成任務

應該算是完結啦~再次感謝土堆老師&#xff01; 模型訓練 模型訓練基本可以分為以下幾個步驟按序執行&#xff1a; 引入數據集-使用dataloader加載數據集-建立模型-設置損失函數-設置優化器-進行訓練-訓練中計算損失&#xff0c;并使用優化器更新參數-模型測試-模型存儲 習慣上會…

深度卷積神經網絡AlexNet

在提出LeNet后卷積神經網絡在計算機視覺和機器學習領域中報有名氣&#xff0c;但是卷積神經網絡并沒有主導這些領域&#xff0c;因為LeNet在小數據集上取得了很好的效果&#xff0c;在更大&#xff0c;更真實的數據集上訓練卷積神經網絡的性能 和可行性有待研究&#xff0c;20世…

數據結構-HashSet

在 Java 編程的世界里&#xff0c;集合框架是極為重要的一部分&#xff0c;而 HashSet 作為 Set 接口的典型實現類&#xff0c;在處理不允許重復元素的場景中頻繁亮相。今天&#xff0c;我們就一同深入探究 HashSet&#xff0c;梳理它的特點、常用方法&#xff0c;以及和其他相…

心意行藥號 · 慈心方的八種用法

心意行藥號 慈心方的八種用法慈心方是心意行藥號589個珍貴秘方中的一個養生茶方&#xff0c;配伍比例科學嚴謹&#xff0c;君臣佐使堪稱經典&#xff0c;自古就有“小小慈心方&#xff0c;轉動大乾坤”之說。自清代光緒年間傳承至今&#xff0c;慈心方受益者逾百萬計&#xff…

Spring面試寶典:Spring IOC的執行流程解析

在準備Spring框架的面試時&#xff0c;“Spring IOC的工作流程是什么&#xff1f;” 是一個非常經典的問題。雖然網上有很多詳細的教程&#xff0c;但它們往往過于復雜&#xff0c;對于沒有深入研究過源碼的人來說理解起來確實有些困難。今天我們就來簡化這個概念&#xff0c;從…

學習日志39 python

1 fromkeys()函數是什么在 Python 中&#xff0c;fromkeys() 是字典&#xff08;dict&#xff09;的一個類方法&#xff0c;用于創建一個新字典。它的作用是&#xff1a;根據指定的可迭代對象&#xff08;如列表、元組等&#xff09;中的元素作為鍵&#xff08;key&#xff09;…

SpringBoot + MyBatis-Plus 使用 listObjs 報 ClassCastException 的原因與解決辦法

在項目中我們經常會遇到這種需求&#xff1a; 根據一組 ID 查詢數據庫&#xff0c;并返回指定字段列表。 我在寫代碼的時候&#xff0c;遇到了一個典型的坑&#xff0c;分享出來給大家。一、問題背景我的代碼是這樣寫的&#xff08;查詢項目表的負責人信息&#xff09;&#xf…

WT2606B 驅屏語音芯片新增藍牙功能:功能集成一體化,產品升級自動化,語音交互無線化,場景應用普適化!

小伙伴們&#xff0c;歡迎來到我們的 &#xff03;唯創芯片小講堂&#xff01;今天我們要為大家介紹一位多才多藝的"芯片全能手"——WT2606B驅屏語音芯片。這顆芯片將在今年8月的I0TE物聯網展及ELEXCON 2025深圳國際電子展上大放異彩。在智能設備滿天飛的今天&#x…

ORA-16331: container is not open ORA-06512: at “SYS.DBMS_LOGMNR“

使用Flink CDC、Debezium等CDC工具對Oracle進行基于log的實時數據同步時遇到異常ORA-16331: container is not open的解決方案。 1. 異常信息 異常信息通常如下&#xff1a; at oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:1823) at oracle.jdbc…

「三維共振」:重構實體零售的破局模式

在電商沖擊與消費升級的雙重浪潮下&#xff0c;傳統零售模式正面臨前所未有的挑戰。wo店首創的 “三維共振” 運營模式&#xff0c;以場景體驗為根基、數據驅動為引擎、社群共生為紐帶&#xff0c;構建起線上線下深度融合的新型零售生態&#xff0c;至今已實現連續 18 個月客流…

將集合拆分成若干個batch,并將batch存于新的集合

在使用saveAll()等方法時&#xff0c;為了防止集合元素過大&#xff0c;使用splitList將原集合&#xff0c;分割成若干個小集合 import java.util.ArrayList; import java.util.List;public class ListUtils {/*** 將集合拆分成若干個batch,并將batch存于新的集合** param list…

Java主流框架全解析:從企業級開發到云原生

Java作為一門歷史悠久且應用廣泛的編程語言&#xff0c;其強大的生態系統離不開各種優秀的框架支持。無論是傳統的企業級應用開發&#xff0c;還是現代的微服務、云原生架構&#xff0c;Java都提供了豐富的框架選擇。本文將全面解析當前主流的Java框架&#xff0c;涵蓋Web開發、…

機器學習——網格搜索(GridSearchCV)超參數優化

網格搜索&#xff08;Grid Search&#xff09;詳細教學1. 什么是網格搜索&#xff1f;在機器學習模型中&#xff0c;算法的**超參數&#xff08;Hyperparameters&#xff09;**對模型的表現起著決定性作用。比如&#xff1a;KNN 的鄰居數量 n_neighborsSVM 的懲罰系數 C 和核函…

【LeetCode】18. 四數之和

文章目錄18. 四數之和題目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a;解題思路算法一&#xff1a;排序 雙指針&#xff08;推薦&#xff09;算法二&#xff1a;通用 kSum&#xff08;含 2Sum 雙指針&#xff09;復雜度關鍵細節代碼實現要點完整題解代碼18. 四數…

Go語言入門(10)-數組

訪問數組元素&#xff1a;數組中的每個元素都可以通過“[]”和一個從0開始的索引進行訪問數組的長度可由內置函數len來確定。在聲明數組時&#xff0c;未被賦值元素的值是對應類型的零值。下面看一個例子package mainfunc main(){var planets [8]stringplanets[0] "Mercu…

為什么經過IPSec隧道后HTTPS會訪問不通?一次隧道環境下的實戰分析

在運維圈子里&#xff0c;大家可能都遇到過這種奇怪的問題&#xff1a;瀏覽器能打開 HTTP 網站&#xff0c;但一換成 HTTPS&#xff0c;頁面就死活打不開。前段時間&#xff0c;我們就碰到這么一個典型案例。故障現象某公司系統在 VPN 隧道里訪問 HTTPS 服務&#xff0c;結果就…

【Linux系統】進程信號:信號的產生和保存

上篇文章我們介紹了Syetem V IPC的消息隊列和信號量&#xff0c;那么信號量和我們下面要介紹的信號有什么關系嗎&#xff1f;其實沒有關系&#xff0c;就相當于我們日常生活中常說的老婆和老婆餅&#xff0c;二者并沒有關系1. 認識信號1.1 生活角度的信號解釋&#xff08;快遞比…

WEB服務器(靜態/動態網站搭建)

簡介 名詞:HTML(超文本標記語言),網站(多個網頁組成一臺網站),主頁,網頁,URL(統一資源定位符) 網站架構:LAMP(linux(系統)+apache(服務器程序)+mysql(數據庫管理軟件)+php(中間軟件)) 靜態站點 Apache基礎 Apache官網:www.apache.org 軟件包名稱:…

開發避坑指南(29):微信昵稱特殊字符存儲異常修復方案

異常信息 Cause: java.sql.SQLException: Incorrect string value: \xF0\x9F\x8D\x8B\xE5\xBB... for column nick_name at row 1異常背景 抽獎大轉盤&#xff0c;抽獎后需要保存用戶抽獎記錄&#xff0c;用戶再次進入游戲時根據抽獎記錄判斷剩余抽獎機會。保存抽獎記錄時需要…