express 怎么搭建 WebSocket 服務器

一:使用?express-ws

var express = require('express');
var app = express();
var expressWs = require('express-ws')(app);app.use(function (req, res, next) {console.log('middleware');req.testing = 'testing';return next();
});app.get('/', function(req, res, next){console.log('get route', req.testing);res.end();
});app.ws('/path', function(ws, req) {console.log('socket', req.testing);ws.on('message', function(msg) {console.log('message', msg);ws.send(msg);});
});app.listen(3000);

客戶端

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>WebSocket Example</title>
</head>
<body><script>const ws = new WebSocket('ws://localhost:3000/path');ws.onopen = () => {console.log('Connected to the server');ws.send('Hello Server!');};ws.onmessage = (event) => {console.log(`Message from server: ${event.data}`);};ws.onclose = () => {console.log('Disconnected from the server');};</script>
</body>
</html>

二:使用 Socket.IO

const express = require('express');
const http = require('http');
const socketIo = require('socket.io');const app = express();
const server = http.createServer(app);const io = socketIo(server, {path: '/path', // 設置Socket.IO的路徑cors: {origin: "*"}
});io.on('connection', (socket) => {console.log('New client connected');socket.on('message', (message) => {console.log(`Received message => ${message}`);// Broadcast the message to all clientsio.emit('message', `Server: ${message}`);});socket.on('disconnect', () => {console.log('Client disconnected');});
});server.listen(3000, () => {console.log('Server is listening on port 3000');
});

客戶端:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Socket.IO Example</title><script src="https://cdn.socket.io/4.7.5/socket.io.min.js" integrity="sha384-2huaZvOR9iDzHqslqwpR87isEmrfxqyWOF7hr7BY6KG0+hVKLoEXMPUJw3ynWuhO" crossorigin="anonymous"></script>
</head>
<body><script>const socket = io('http://localhost:3000', {path: '/path'});socket.on('connect', () => {console.log('Connected to the server');socket.send('Hello Server!');});socket.on('message', (message) => {console.log(`Message from server: ${message}`);});socket.on('disconnect', () => {console.log('Disconnected from the server');});</script>
</body>
</html>

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

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

相關文章

【AI論文】SuperEdit:修正并促進基于指令的圖像編輯的監督信號

摘要&#xff1a;由于手動收集準確的編輯數據存在挑戰&#xff0c;現有的數據集通常使用各種自動化方法構建&#xff0c;導致編輯指令和原始編輯圖像對之間不匹配導致監督信號出現噪聲。 最近的研究試圖通過生成更高質量的編輯圖像、在識別任務上進行預訓練或引入視覺語言模型&…

關于大疆紅外圖片提取溫度方法 python 方法

思路 紅外圖片需要是黑白圖片 提取紅外圖片最高和最低溫度 溫度圖例 根據最高溫度31.2攝氏度 最低溫度19.9攝氏度 那中間的值在 0到255 之間 那有這個值之后。就可以獲取到圖片里面 每個點或者面的值 實現方式 def find_Gray(self, t_max, t_min, c_temp):"""…

金融小知識

&#x1f4c9; 一、“做空”是啥&#xff1f; 通俗說法&#xff1a;押“它會跌”&#xff0c;賺錢&#xff01; ? 舉個例子&#xff1a; 有一天老王的包子漲價到 10 塊一個&#xff0c;張三覺得這價格肯定撐不住&#xff0c;未來會跌到 5 塊。于是他&#xff1a; 向朋友借了…

JavaScript 數據存儲全攻略:從 Cookie 到 IndexedDB

1. Cookie&#xff1a;傳統的輕量級存儲 Cookie 是最早的客戶端存儲解決方案之一&#xff0c;最初設計用于服務器和客戶端之間的狀態保持。 基本用法 javascript 復制 下載 // 設置cookie document.cookie "usernameJohnDoe; expiresThu, 18 Dec 2025 12:00:00 UTC…

Leetcode 刷題記錄 09 —— 鏈表第三彈

本系列為筆者的 Leetcode 刷題記錄&#xff0c;順序為 Hot 100 題官方順序&#xff0c;根據標簽命名&#xff0c;記錄筆者總結的做題思路&#xff0c;附部分代碼解釋和疑問解答&#xff0c;01~07為C語言&#xff0c;08及以后為Java語言。 01 合并 K 個升序鏈表 /*** Definitio…

如何利用 Elastic Load Balancing 提升應用性能與可用性?

當今云計算的快速發展中&#xff0c;隨著應用需求的增加&#xff0c;如何確保系統能夠高效、穩定地處理不斷增長的流量成為了每個技術團隊關注的焦點。Elastic Load Balancing&#xff08;ELB&#xff09;作為一種強大的工具&#xff0c;能夠幫助開發者和運維人員輕松應對流量波…

Word如何制作三線表格

1.需求 將像這樣的表格整理成論文中需要的三線表格。 2.直觀流程 選中表格 --> 表格屬性中的邊框與底紋B --> 在設置中選擇無&#xff08;重置表格&#xff09;–> 確定 --> 選擇第一行&#xff08;其實是將第一行看成獨立表格了&#xff0c;為了設置中線&…

JVM的雙親委派模型

引言 Java類加載機制中的雙親委派模型通過層層委托保證了核心類加載器與應用類加載器之間的職責分離和加載安全性&#xff0c;但其單向的委托關系也帶來了一些局限性。尤其是在核心類庫需要訪問或實例化由應用類加載器加載的類時&#xff0c;雙親委派模型無法滿足需求&#xf…

6.4.高并發設計

目錄 一、高并發系統設計基礎理論 CAP定理與高可用性權衡 ? 一致性&#xff08;C&#xff09; vs 可用性&#xff08;A&#xff09;在電商、社交場景的取舍 ? 分區容錯性&#xff08;P&#xff09;的實踐意義&#xff1a;異地多活與腦裂處理 性能指標與評估模型 ? QPS、TP…

工程師轉型算法工程師 深入淺出理解transformer-手搓板

編碼器 以下部分引用臺灣大學李宏毅教授的ppt 自己理解解釋一遍(在youtobe 上可以搜索李宏毅即可) 首先先來看transformer的架構圖 Embedding 我們先從Imput Embedding 跟 OutPutEmbedding 開始&#xff0c;讓我們用 bert 模型來做一個解釋 從huggingface上下載的bert-base…

軟件工程學概述

一、軟件危機 &#xff08;一&#xff09;軟件危機的介紹 1. 基本思想與定義 軟件危機&#xff08;Software Crisis&#xff09;是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題&#xff0c;這些問題既包括技術層面的挑戰&#xff0c;也涉及管理層面的困境。其核心…

【ArcGIS Pro微課1000例】0068:Pro原來可以制作演示文稿(PPT)

文章目錄 一、新建演示文稿二、插入頁面1. 插入地圖2. 插入空白文檔3. 插入圖像4. 插入視頻三、播放與保存一、新建演示文稿 打開軟件,新建一個地圖文檔,再點擊【新建演示文稿】: 創建的演示文檔會默認保存在目錄中的演示文稿文件夾下。 然后可以對文檔進行簡單的設計,例如…

[吾愛出品][Windows] 產品銷售管理系統2.0

[Windows] 產品銷售管理系統 鏈接&#xff1a;https://pan.xunlei.com/s/VOPej1bHMRCHy2np9w3TBOyKA1?pwdgjy7# 使用方法&#xff1a;1、先設置一下圖片保存路徑 2、維護產品。客戶等基礎信息。例如&#xff1a;銷售類型&#xff1a;一次性 銷售編碼&#xff1a;RCX。 3、銷…

MySQL數據庫高可用(MHA)詳細方案與部署教程

一&#xff1a;MHA簡介 核心功能 二&#xff1a;MHA工作原理 三&#xff1a;MHA組件 四&#xff1a;MHA 架構與工具 MHA架構 Manager關鍵工具 Node工具 五&#xff1a;工作原理與流程 1: 故障檢測 2: 故障切換&#xff08;Failover&#xff09; 3 : 切換模式 六&a…

華為設備鏈路聚合實驗:網絡工程實戰指南

鏈路聚合就像為網絡搭建 “并行高速路”&#xff0c;既能擴容帶寬&#xff0c;又能保障鏈路冗余&#xff0c;超實用&#xff01; 一、實驗拓撲速覽 圖中兩臺交換機 LSW1 和 LSW2&#xff0c;PC1、PC2 歸屬 VLAN 10&#xff0c;PC3 歸屬 VLAN 30。LSW1 與 LSW2 通過 GE0/0/1、…

數組和集合

數組和集合的區別&#xff1a; 1、數組是固定長度的數據結構&#xff0c;一旦創建長度就無法改變&#xff0c;集合是動態長度數據結構&#xff0c;可根據需求動態增加或減少元素。 2、數組包含基本數據類型和對象&#xff0c;而集合只能包含對象。 3、數組可以直接訪問元素&…

WPF MVVM進階系列教程(一、對話框)

&#x1f360; WPF MVVM進階系列教程 一、對話框 在前面的文章中&#xff0c;我們介紹了MVVM開發的一些基礎知識。 對于日常開發來說&#xff0c;基本已經足夠應付大部分場景。 從這里開始&#xff0c;介紹的都是在MVVM模式開發中&#xff0c;提升程序可維護性、靈活性、健壯…

【AI News | 20250507】每日AI進展

AI Repos 1、CFWorkerACME SSL證書助手是一個免費開源的平臺&#xff0c;基于Cloudflare Worker運行&#xff0c;旨在自動化SSL證書的申請和下發&#xff0c;尤其適用于多服務器或內網環境。它通過自動化的CNAME和DNS操作完成域名驗證&#xff0c;支持Let’s Encrypt、ZeroSSL…

5 分鐘用滿血 DeepSeek R1 搭建個人 AI 知識庫(含本地部署)

最近很多朋友都在問:怎么本地部署 DeepSeek 搭建個人知識庫。 老實說,如果你不是為了研究技術,或者確實需要保護涉密數據,我真不建議去折騰本地部署。 為什么呢? 目前 Ollama 從 1.5B 到 70B 都只是把 R1 的推理能力提煉到 Qwen 和 Llama 的蒸餾版本上。 雖說性能是提升…

極狐GitLab 分支管理功能介紹

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 分支 (BASIC ALL) 分支是項目工作樹的一個版本。分支是項目開發的基礎。當你創建一個新的項目時&#xff0c;極狐GitLab 會為…