📅  最后修改于: 2023-12-03 15:03:11.966000             🧑  作者: Mango
Sockets.IO 是 Node.js 中最常用的用于实现 WebSocket 和实时通信的库,它提供了一种简单、轻量级、灵活的方法来进行客户端和服务器之间的实时通信,支持不同的传输协议和数据格式。
通过 npm 安装 Sockets.IO:
npm install socket.io
在服务器端,引入 Sockets.IO 并创建一个 HTTP 服务器:
const server = require('http').createServer();
const io = require('socket.io')(server);
server.listen(3000);
在客户端,引入 Sockets.IO 并连接服务器:
const socket = require('socket.io-client')('http://localhost:3000');
现在客户端和服务器之间可以开始进行实时通信了。
Sockets.IO 提供了一些事件用于处理客户端和服务器之间的通信:
用于建立客户端和服务器之间的连接:
io.on('connection', (socket) => {
console.log(`Client connected: ${socket.id}`);
});
用于向其他客户端发送消息:
socket.emit('message', 'Hello, world!');
用于处理客户端与服务器之间的断开连接:
socket.on('disconnect', () => {
console.log(`Client disconnected: ${socket.id}`);
});
除了上述事件之外,还可以自定义事件来进行实时通信,例如:
// 服务器端
io.on('connection', (socket) => {
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
});
// 客户端
socket.emit('chat message', 'Hello, world!');
以下是一个简单的实例,用于实现一个聊天室的功能:
// 服务器端
const server = require('http').createServer();
const io = require('socket.io')(server);
const connectedUsers = new Set();
io.on('connection', (socket) => {
connectedUsers.add(socket.id);
socket.on('disconnect', () => {
connectedUsers.delete(socket.id);
io.emit('user disconnected', socket.id);
});
socket.on('chat message', (msg) => {
io.emit('chat message', {id: socket.id, message: msg});
});
io.emit('user connected', socket.id);
});
server.listen(3000);
// 客户端
const socket = require('socket.io-client')('http://localhost:3000');
socket.on('connect', () => {
console.log(`Connected to server: ${socket.id}`);
});
socket.on('user connected', (userId) => {
console.log(`User connected: ${userId}`);
});
socket.on('user disconnected', (userId) => {
console.log(`User disconnected: ${userId}`);
});
socket.on('chat message', (data) => {
console.log(`${data.id}: ${data.message}`);
});
// 发送消息
socket.emit('chat message', 'Hello, world!');
以上介绍了 Sockets.IO 的基本用法和一些常用的事件,更多信息可以查阅官方文档。