目录结构
websocket //go集成WebSocket
├── client // 客户端示例
├── server // 服务端示例
└── demo // 页面使用demo
WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议,通常用于需要实时数据交换的应用场景。它与 HTTP 不同,但可以通过 HTTP 协议启动,使用的是 ws:// 或 wss:// 协议(后者是加密版本)。
- 握手:客户端通过 HTTP 发起 WebSocket 握手请求,服务器响应并升级连接至 WebSocket。
- 数据帧传输:一旦连接建立,客户端和服务器可以在不关闭连接的情况下,相互发送消息,消息以数据帧的形式传输。
- 关闭连接:任一方可以随时关闭连接。
- 实时聊天应用(如即时通讯工具)
- 在线游戏
- 实时数据推送(如股票行情、体育比分)
- 协同编辑工具
- 浏览器兼容性和支持
- 服务器负载增加
- WebSocket 连接是持久性的,意味着每个客户端与服务器之间的连接会持续存在,直到客户端断开。这对于服务器的连接处理能力提出了更高的要求,特别是当同时有大量客户端连接时,服务器需要能够维持这些长时间的连接。
- 资源消耗和维护成本
- 安全性
- WebSocket 本身不提供应用层的安全措施,虽然可以通过 WSS (WebSocket Secure) 加密传输数据,但应用层仍需自行处理身份验证、授权、加密和其他安全需求。如果没有适当的身份验证机制,恶意用户可以发起 WebSocket 连接,进而实施攻击。
- 临时保存
- 保存到内存
- 保存到文件中
- 持久化保存
- 保存到数据库中
- 保存到消息队列中