📜  socket io - Javascript (1)

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

Socket.IO - Javascript

简介

Socket.IO 是一个 JavaScript 库,它使得实时的双向通信在 Web 上更加容易。它可以在服务器端和客户端之间提供实时的双向通信,并自适应网络条件而不需要使用轮询。

Socket.IO 可以在不同的浏览器及平台上工作,并且提供了一套易于使用的 API,使得实现实时的双向通信变得非常简单。

客户端

若要使用 Socket.IO,首先需要在 HTML 文件中引入 Socket.IO 的客户端库。可以通过以下方式来实现:

<script src="/socket.io/socket.io.js"></script>

然后创建一个 Socket 对象并连接到服务器:

const socket = io.connect('http://localhost:3000');

在成功连接后,可以使用 socket.emit()发送消息到服务器,并使用 socket.on()监听来自服务器的消息。

// 发送一个消息到服务器
socket.emit('chat message', 'Hello, world!');

// 监听来自服务器的消息
socket.on('chat message', (msg) => {
  console.log(msg);
});

除了发送字符串消息外,可以发送包括 JSON 在内的任何 JavaScript 对象。当使用 JSON 时,可以在对象上使用 toJSON 方法来序列化它:

const myData = { name: 'Alice', age: 30 };
socket.emit('my event', myData);  // 发送一个包含 JSON 数据的 event
socket.on('my event', (json) => {
  const data = JSON.parse(json);  // 解析 JSON 数据
  console.log(data.name, data.age);
});
服务器端

在服务器端,需要使用 Socket.IO 的节点模块。可以通过以下方式来安装它:

npm install socket.io

然后创建一个服务器并监听客户端的连接:

const http = require('http');
const socketIO = require('socket.io');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, world!');
});

const io = socketIO(server);

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('chat message', (msg) => {
    console.log(`message: ${msg}`);
    io.emit('chat message', msg);
  });
});

这段代码创建了一个 HTTP 服务器,并使用 Socket.IO 监听客户端的连接。在连接事件上,可以使用 socket.on()监听来自客户端的消息,使用 io.emit()向所有客户端广播消息。

总结

Socket.IO 提供了一个易于使用的 API,使得实现基于 WebSocket 的实时双向通信变得简单。通过 Socket.IO,可以在客户端和服务器之间建立起实时的双向通信,这使得开发实时 Web 应用变得更容易。