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分为两部分:服务器端和客户端。
两者使用相同的API结构,便于理解和维护。
搭建Socket.IO服务器
先安装依赖:
立即学习“Java免费学习笔记(深入)”;
npm install express socket.io创建一个简单的服务器:
华友协同办公管理系统(华友OA),基于微软最新的.net 2.0平台和SQL Server数据库,集成强大的Ajax技术,采用多层分布式架构,实现统一办公平台,功能强大、价格便宜,是适用于企事业单位的通用型网络协同办公系统。 系统秉承协同办公的思想,集成即时通讯、日记管理、通知管理、邮件管理、新闻、考勤管理、短信管理、个人文件柜、日程安排、工作计划、工作日清、通讯录、公文流转、论坛、在线调查、
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连接。
- 合理管理连接状态,避免内存泄漏。
基本上就这些。掌握基础用法后,可以扩展出丰富的实时交互功能。








