📜  socket io (1)

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

Socket.IO

Socket.IO 是一个基于 Node.js 的实时网络通讯库,可实现客户端和服务器之间的双向通讯。它支持 WebSockets 协议、轮询和其他实时通讯技术,并提供了一个易于使用的 API,可以在 Node.js 中使用,也可在浏览器中使用。

实时通讯

传统的 HTTP 协议是单向的,浏览器向服务器发起一个请求,服务器返回一个响应。而实时通讯是指在客户端和服务器之间建立一个持久的连接,使得双方可以随时彼此发送消息。实时通讯在很多应用场景中非常有用,例如聊天室、实时协作、游戏等。

安装

在 Node.js 项目中使用 npm 进行安装:

npm install socket.io

在浏览器中使用,可以通过 CDN 引入:

<script src="//cdn.socket.io/socket.io-2.3.0.js"></script>
用法
服务器端

使用 Socket.IO 的服务器端非常简单,只需要创建一个 HTTP 服务器并将其传递给 Socket.IO,就可以监听客户端的连接:

const app = require('http').createServer();
const io = require('socket.io')(app);

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.emit('welcome', 'Hello world!');
});

app.listen(3000, () => {
  console.log('listening on *:3000');
});

上面的代码中,通过 http 模块创建了一个 HTTP 服务器,然后将该服务器传递给了 Socket.IO,使之可以监听客户端的连接。io.on('connection', ...) 表示当有新的客户端连接时,执行回调函数。在回调函数中可以使用 socket.emit(...) 来向客户端发送消息,socket.on(...) 则可以监听客户端发送的消息。

客户端

使用 Socket.IO 的客户端也非常简单,只需要引入 Socket.IO 库,然后连接服务器即可:

<script src="//cdn.socket.io/socket.io-2.3.0.js"></script>
<script>
  const socket = io('http://localhost:3000');
  socket.on('welcome', (message) => {
    console.log(message); // Hello world!
  });
</script>

上面的代码中,通过引入 Socket.IO 库,然后使用 io('http://localhost:3000') 连接到服务器。连接成功后,可以使用 socket.on(...) 监听服务器发送的消息,并使用 socket.emit(...) 向服务器发送消息。

总结

Socket.IO 是一个非常实用的实时通讯库,可以通过简单的 API 实现客户端和服务器之间的双向通讯。它支持多种实时通讯技术,在浏览器和 Node.js 中均可使用。如果你需要实现实时通讯的功能,Socket.IO 是一个不错的选择。