Websocket聊天室
Socket.IO
Socket.IO 是一个用于实现实时双向通信的库,通常用于构建需要实时交互的 web 应用程序。它建立在 WebSocket 协议之上,但比 WebSocket 提供了更高级的功能和更好的兼容性。
主要特性
- 实时双向通信:支持客户端和服务器之间的实时消息交换。
- 自动重连:连接断开后,Socket.IO 会自动尝试重新连接。
- 事件驱动架构:使用事件的方式处理通信,支持自定义事件,使得开发更加直观和灵活。
- 跨平台兼容性:即使在不支持 WebSocket 的环境中,Socket.IO 也能通过轮询等其他技术进行通信。
- 命名空间(Namespaces):允许通过命名空间将不同的通信逻辑隔离开来,便于管理和扩展。
- 房间(Rooms):可以将客户端分配到特定的房间,便于进行组播、广播等操作。
使用场景
- 即时通讯应用:如聊天软件、客服系统。
- 协同编辑:实时同步文档或表格的编辑状态。
- 多人在线游戏:同步游戏状态和玩家动作。
- 实时数据更新:如股票、天气等实时信息推送。
- 实时通知和警报系统。
服务端:Node.js + Express
客户端:Vue3 + Vite
笔记
客户端需要安装 sokcet.io-client 这个库,安装完成后需要在 main.js 注册使用这个库
js
// main.js
// 创建一个 socket 客户端实例
const socket = io('http://localhost:3000', {
// 这里是在配置客户端与服务器端建立连接的优先级列表
// 1. 第一优先级使用 websocket
// 2. 第二优先级使用 polling(长轮询)
// 3. 第三优先级使用 flashsocket
transports: ['websocket', 'polling', 'flashsocket']
})
// 将 socket 实例挂载到 app.config.globalProperties 上
app.config.globalProperties.$socket = socket
-EOF-