Skip to content

Latest commit

 

History

History
37 lines (32 loc) · 1.81 KB

README.md

File metadata and controls

37 lines (32 loc) · 1.81 KB

GO 集成WebSocket

目录结构

websocket //go集成WebSocket
├── client    // 客户端示例      
├── server    // 服务端示例
└── demo    // 页面使用demo

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,通常用于需要实时数据交换的应用场景。它与 HTTP 不同,但可以通过 HTTP 协议启动,使用的是 ws:// 或 wss:// 协议(后者是加密版本)。

WebSocket 的工作原理

  • 握手:客户端通过 HTTP 发起 WebSocket 握手请求,服务器响应并升级连接至 WebSocket。
  • 数据帧传输:一旦连接建立,客户端和服务器可以在不关闭连接的情况下,相互发送消息,消息以数据帧的形式传输。
  • 关闭连接:任一方可以随时关闭连接。

WebSocket 的应用场景

  • 实时聊天应用(如即时通讯工具)
  • 在线游戏
  • 实时数据推送(如股票行情、体育比分)
  • 协同编辑工具

WebSocket 缺点

  • 浏览器兼容性和支持
  • 服务器负载增加
    • WebSocket 连接是持久性的,意味着每个客户端与服务器之间的连接会持续存在,直到客户端断开。这对于服务器的连接处理能力提出了更高的要求,特别是当同时有大量客户端连接时,服务器需要能够维持这些长时间的连接。
  • 资源消耗和维护成本
  • 安全性
    • WebSocket 本身不提供应用层的安全措施,虽然可以通过 WSS (WebSocket Secure) 加密传输数据,但应用层仍需自行处理身份验证、授权、加密和其他安全需求。如果没有适当的身份验证机制,恶意用户可以发起 WebSocket 连接,进而实施攻击。

保存消息

  • 临时保存
    1. 保存到内存
    2. 保存到文件中
  • 持久化保存
    1. 保存到数据库中
    2. 保存到消息队列中