Socket.IO基于WebSocket实现客户端与服务器的实时双向通信,具备自动重连、断线恢复等特性,适用于聊天应用、实时通知等场景;其由服务器端(Node.js环境)和客户端组成,使用一致的API结构;通过Express搭建服务器并监听connection事件处理连接、消息收发与断开;前端引入socket.io-client库,调用io()连接服务器,并用emit发送消息、on接收消息;支持emit、broadcast、rooms等通信方式,需注意CORS配置、反向代理部署及连接状态管理以避免内存泄漏。
JavaScript中的Socket.IO是一个强大的库,用于实现客户端与服务器之间的实时双向通信。它基于WebSocket,但具备更好的兼容性和自动重连、断线恢复等特性,适合开发聊天应用、实时通知、协作工具等需要即时交互的功能。
Socket.IO基本组成
Socket.IO分为两部分:服务器端和客户端。
- 服务器端:运行在Node.js环境中,通常集成在Express等Web框架中。
- 客户端:通过浏览器引入socket.io-client,与服务器建立连接并收发消息。
两者使用相同的API结构,便于理解和维护。
搭建Socket.IO服务器
先安装依赖:
npm install express 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);
io.on('connection', (socket) => {
console.log('用户已连接');
socket.on('message', (data) => {
io.emit('message', data); // 广播给所有客户端
});
socket.on('disconnect', () => {
console.log('用户断开连接');
});
});
server.listen(3000, () => {
console.log('服务器运行在 http://localhost:3000');
});
前端连接与通信
在HTML页面中引入客户端库
并连接:
常用功能与注意事项
Socket.IO支持多种通信方式:
- emit:发送事件,可携带数据。
- broadcast:向除自己外的所有人发送(socket.broadcast.emit)。
- rooms:加入房间实现群组通信,如聊天室或游戏房间。
注意点:
- 确保CORS配置正确,避免跨域问题。
- 生产环境建议使用反向代理(如Nginx)处理WebSocket连接。
- 合理管理连接状态,避免内存泄漏。
基本上就这些。掌握基础用法后,可以扩展出丰富的实时交互功能。








