湘潭九华网站湖北网站设计

张小明 2026/3/13 0:54:37
湘潭九华网站,湖北网站设计,找人做网站需要多少钱,修改网站首页排序在 Web 开发中#xff0c;大多数人每天都在编写 HTTP 接口#xff0c;却很少真正思考一个问题#xff1a;如果服务端需要“主动”把消息推送给客户端#xff0c;该怎么办#xff1f; 传统的 HTTP 请求–响应模型决定了通信只能由客户端发起#xff0c;这在即时通信、实时…在 Web 开发中大多数人每天都在编写 HTTP 接口却很少真正思考一个问题如果服务端需要“主动”把消息推送给客户端该怎么办传统的 HTTP 请求–响应模型决定了通信只能由客户端发起这在即时通信、实时推送、在线协作等场景下显得力不从心。正是在这样的背景下WebSocket 应运而生。本文将从通信模型的角度出发系统讲解 WebSocket 是如何工作的以及它为何成为实时 Web 系统的核心技术。一、为什么需要 WebSocket1.HTTP 的先天缺陷HTTP 是请求-响应模型客户端请求 → 服务端响应 → 连接关闭或复用问题服务端不能主动推送数据实时性差高频轮询浪费资源例如以下的场景聊天消息股票行情设备状态变化如果用 HTTP进行轮询客户端有新消息吗客户端有新消息吗客户端有新消息吗客户端会一直发送请求而服务端会一直判断请求的结果。这样会导致一系列问题比如低效、延迟高、服务器压力大2.WebSocket 的核心目标建立一次连接长期保持双向实时通信WebSocket 让通信模型变成客户端 ⇄ 服务端随时互相发消息二、WebSocket 的本质WebSocket 的本质是借用 HTTP 握手兼容网络、基于 TCP 实现的全双工应用层长连接协议核心解决了 Web 场景下 “服务端主动推数据” 的需求。WebSocket 是 HTML5 规范定义的应用层协议RFC 6455 标准其底层完全依赖 TCP 协议提供的可靠字节流传输最终实现「客户端与服务端的全双工、长连接通信」WebSocket 基于 TCP 的全双工长连接协议三、WebSocket 握手全过程WebSocket 通过HTTP Upgrade建立连接WebSocket 为了兼容现有网络防火墙、代理通常放行 HTTP采用「HTTP 升级握手」的方式建立连接客户端发送 HTTP 请求头部携带Upgrade: websocket和Connection: Upgrade声明要升级为 WebSocket 协议服务端同意升级返回 101 Switching Protocols 响应握手完成后底层 TCP 连接被 “接管”后续通信不再遵循 HTTP 规则而是用 WebSocket 帧格式传输数据。客户端发起 HTTP 请求GET /ws HTTP/1.1Host: example.comUpgrade: websocketConnection: UpgradeSec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQSec-WebSocket-Version: 13服务端返回 101 Switching ProtocolsHTTP/1.1 101 Switching ProtocolsUpgrade: websocketConnection: UpgradeSec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbKxOoHTTP 协议结束TCP 连接不关闭开始使用WebSocket 帧协议四、WebSocket 帧结构| FIN | OPCODE | MASK | PAYLOAD LEN | DATA |1. FIN帧是否为消息的 “最后一帧”核心作用WebSocket 支持 “消息分片”—— 一个完整的消息可以拆分成多个帧发送FIN标记当前帧是否是该消息的最后一帧若一条消息拆成3 帧发送第 1、2 帧FIN0第 3 帧FIN12. OPCODE帧的 “类型”操作码OPCODE 值含义场景0x00延续帧Continuation Frame消息分片时非首帧的后续帧0x11文本帧Text Frame传输 UTF-8 文本数据如 JSON0x22二进制帧Binary Frame传输二进制数据如文件、图片0x88关闭帧Close Frame主动关闭连接时发送0x99心跳请求Ping Frame检测连接是否存活服务端 / 客户端均可发0xA10心跳响应Pong Frame收到 Ping 后必须回复 Pong3. MASK载荷数据是否 “加掩码”核心规则强制客户端 → 服务端MASK1必须加掩码否则服务端拒收服务端 → 客户端MASK0禁止加掩码为什么加掩码防止恶意数据被中间件如代理误解为 HTTP 协议提升安全性4. PAYLOAD LEN载荷数据的长度5. DATA实际传输的 “有效数据”PAYLOAD DATA五、Go 中 WebSocket 的基本使用Go 标准库不直接提供 WebSocket通常使用github.com/gorilla/websocketWebSocket 服务端var upgrader websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // 生产环境需校验 }, } func wsHandler(w http.ResponseWriter, r *http.Request) { conn, err : upgrader.Upgrade(w, r, nil) if err ! nil { return } defer conn.Close() for { msgType, msg, err : conn.ReadMessage() if err ! nil { break } conn.WriteMessage(msgType, msg) } }核心步骤HTTP 请求进入 HandlerUpgrade()完成协议升级得到一个TCP Socket 长连接WebSocket 客户端conn, _, err : websocket.DefaultDialer.Dial( ws://localhost:8080/ws, nil, ) if err ! nil { panic(err) } defer conn.Close() conn.WriteMessage(websocket.TextMessage, []byte(hello)) _, msg, _ : conn.ReadMessage() fmt.Println(string(msg))六、WebSocket 的通信模型一个连接 一个 Socket一个连接├── 读协程Read Loop└── 写协程Write Loop避免写阻塞读避免并发写 panic七、WebSocket 心跳机制为什么需要心跳NAT / 代理会悄悄断连接TCP 断了你不一定立刻知道常见方式ping / pong定时消息// 设置 Pong 帧的处理函数当收到对方服务端/客户端的 Pong 帧时执行该回调 conn.SetPongHandler(func(string) error { // 重置连接的「读超时时间」为当前时间 60秒 conn.SetReadDeadline(time.Now().Add(60 * time.Second)) return nil // 无错误返回标识 Pong 帧处理成功 })八、完整通信模型总结图文字版HTTP 建立连接 ↓ Upgrade → WebSocket ↓ TCP 长连接保持 ↓ 消息驱动 全双工通信 ↓ 心跳维持连接 ↓ 任意一方关闭连接WebSocket 基于 TCP 建立长连接通信模型是全双工、消息驱动的连接一旦建立客户端和服务端都可以随时主动发送消息适合实时、高频、双向通信场景。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站建设与网页设计专业的天水网站建设博客

Qwen3-14B本地部署实战:打造企业级私有化AI引擎 在金融合规部门的深夜会议室里,法务团队正为一份跨国并购合同焦头烂额——328页的PDF文档中藏着十几个关键风险点,而距离截止时间只剩6小时。与此同时,某电商平台的客服系统正承受着…

张小明 2026/3/10 10:21:34 网站建设

淄博 做网站隆尧企业做网站

新钛云服已累计为您分享875篇技术干货全球视觉智能新浪潮—“香蕉风暴”与国内视觉大模型的较量在AI内容生成领域,一场关于“视觉天花板”的竞赛正愈演愈烈。近期,一款以“Nano Banana”为代号的模型以前所未有的姿态迅速在社区崛起,其官方身…

张小明 2026/3/8 4:30:05 网站建设

常州中环互联网网站建设佛山企业如何建网站

Linux网络连接与文件传输全攻略 1. 使用NetworkManager连接互联网 NetworkManager小程序是与NetworkManager交互并轻松查看连接状态的工具,它位于顶部导航栏。点击该小程序可获得更多选项。 1.1 不同环境下的表现 虚拟会话 :NetworkManager认为计算机通过有线连接,不会…

张小明 2026/3/5 2:47:48 网站建设

怎么用自己主机做网站、云南建设网站首页

第一章:Open-AutoGLM 模型下载慢的根源分析模型下载速度缓慢是使用 Open-AutoGLM 过程中常见的痛点,其根本原因涉及多个层面的技术与网络因素。理解这些根源有助于针对性优化下载流程,提升开发效率。网络源地理位置分布不均 Open-AutoGLM 模型…

张小明 2026/3/5 2:47:52 网站建设

杭州建设厅网站网站右侧分享插件

第一章:边缘Agent部署的行业背景与演进随着物联网(IoT)、5G通信和人工智能技术的快速发展,数据正以前所未有的速度在终端设备端产生。传统的集中式云计算架构在处理海量实时数据时面临延迟高、带宽压力大和隐私泄露等挑战。在此背…

张小明 2026/3/5 2:47:52 网站建设

网站开发 验收查看网站的 cms

Qwen-Image图像生成调优指南:告别模糊变形的终极方案 【免费下载链接】Qwen-Image 我们隆重推出 Qwen-Image,这是通义千问系列中的图像生成基础模型,在复杂文本渲染和精准图像编辑方面取得重大突破。 项目地址: https://ai.gitcode.com/hf_…

张小明 2026/3/5 2:47:53 网站建设