一:使用 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 clients
io.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>