Skip to content

Websocket聊天室

Socket.IO

Socket.IO 是一个用于实现实时双向通信的库,通常用于构建需要实时交互的 web 应用程序。它建立在 WebSocket 协议之上,但比 WebSocket 提供了更高级的功能和更好的兼容性。

主要特性

  1. 实时双向通信:支持客户端和服务器之间的实时消息交换。
  2. 自动重连:连接断开后,Socket.IO 会自动尝试重新连接。
  3. 事件驱动架构:使用事件的方式处理通信,支持自定义事件,使得开发更加直观和灵活。
  4. 跨平台兼容性:即使在不支持 WebSocket 的环境中,Socket.IO 也能通过轮询等其他技术进行通信。
  5. 命名空间(Namespaces):允许通过命名空间将不同的通信逻辑隔离开来,便于管理和扩展。
  6. 房间(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-

Released under the MIT License.