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>