当前位置: 首页 > news >正文

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>

相关文章:

  • Linux | 了解Linux中的任务调度---at与crontab 命令
  • 调试Cortex-M85 MCU启动汇编和链接命令文件 - 解题一则
  • 基于多策略混合改进哈里斯鹰算法的混合神经网络多输入单输出回归预测模型HPHHO-CNN-LSTM-Attention
  • 【AI提示词】黑天鹅模型专家
  • 如何提高情商?(优化版)
  • 【转载】【翻译】图解智能体到智能体 (A2A) 协议
  • org.apache.poi——将 office的各种类型文件(word等文件类型)转为 pdf
  • 14.Excel:排序和筛选
  • 19、权限控制:分院帽系统——React 19 RBAC实现
  • Kubernetes 安装 minikube
  • Day3:设置页面全局渐变线性渐变背景色uniapp壁纸实战
  • qmt下载的数据放在了哪里了?
  • 利用flask设计接口
  • Linux 的网络卡
  • 黑马点评day01(基于Redis)
  • C++ 多态:原理、实现与应用
  • 补充:建立实体类与数据表的映射关系
  • C盘莫名其妙一直变大
  • 从github的插件直接导入unity
  • stm32week14
  • 视频丨054B型护卫舰钦州舰南海实战化训练
  • 澳大利亚总理阿尔巴尼斯率领工党赢得2025年联邦选举
  • 消费持续升温,这个“五一”假期有何新亮点?
  • 重庆市大渡口区区长黄红已任九龙坡区政协党组书记
  • CMG亚太总站:没有邀请韩国偶像团体举办巡回演出
  • 乌美矿产协议文本公布,明确乌收益及协议优先级