📜  Node 中的 Sockets.IO 介绍(1)

📅  最后修改于: 2023-12-03 15:03:11.966000             🧑  作者: Mango

Node 中的 Sockets.IO 介绍

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 提供了一些事件用于处理客户端和服务器之间的通信:

connection

用于建立客户端和服务器之间的连接:

io.on('connection', (socket) => {
  console.log(`Client connected: ${socket.id}`);
});
message

用于向其他客户端发送消息:

socket.emit('message', 'Hello, world!');
disconnect

用于处理客户端与服务器之间的断开连接:

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 的基本用法和一些常用的事件,更多信息可以查阅官方文档。