Socket.IO 是一个库,可以在客户端和服务器之间实现 低延迟, 双向 和 基于事件的 通信
Socket.IO 是一个开源的 JavaScript 库,可以实现实时通信,适用于构建实时应用程序,如消息通讯和多人在线游戏等等。能用于实时通讯的库有很多,其中包括:WebSocket、SignalR Pusher等等,但是socket.io对于消息通讯支持得比较好,所以我们选用soket.io。
前端:vue3+socket.io-client
后端:express+socket.io
connection --- 建立连接
disconnect --- 断开连接
// server-side
io.on("connection", (socket) => {
console.log(socket.id); // x8WIv7-mJelg7on_ALbx
});
// client-side
socket.on("connect", () => {
console.log(socket.id); // x8WIv7-mJelg7on_ALbx
});
socket.on("disconnect", () => {
console.log(socket.id); // undefined
});
服务端
客户端
跨平台兼容性:socket.io 支持在多种平台和设备上使用,并且可以在客户端和服务器之间建立可靠的连接,包括浏览器、服务器和移动设备。
双向通信:socket.io 提供了一个基于事件的双向通信机制,使得服务器和客户端可以实时地发送和接收数据。这种实时通信模型非常适用于聊天应用程序、实时协作工具等需要即时更新的场景。
异地分布支持:socket.io 具有对异地分布的支持,即使服务器和客户端在不同的服务器上,也可以通过 socket.io 建立稳定的连接并进行实时通信。
自动回退:socket.io 使用了一种自动回退机制,如果浏览器或设备不支持 WebSocket 协议,它将自动降级到使用长轮询或其他传输方式,以确保与服务器的连接仍然可靠。
极简的 API:socket.io 提供了简单易用的 API,使得开发者可以轻松地建立和管理基于事件的通信。它提供了事件绑定、消息发送、房间管理等功能,使得开发者可以专注于业务逻辑的实现。
可靠性和容错性:socket.io 具备可靠性和容错性,在网络不稳定或断开连接的情况下,可以自动重新连接,并提供一些机制来处理丢失的数据包,保证通信的顺利进行。
在服务器端,我们可以使用 on
方法来监听自定义事件