2026/4/15 1:42:12
网站建设
项目流程
12380网站开发,品牌手机网站开发哪家好,阳江有哪些建站公司,个体户年报网上申报流程文章目录一、背景与动机二、核心特点三、工作流程四、应用场景五、安全考虑六、编程示例#xff08;简要#xff09;七、与类似技术对比WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议#xff0c;由 HTML5 规范引入#xff0c;旨在解决传统 HTTP 协议在实时通…文章目录一、背景与动机二、核心特点三、工作流程四、应用场景五、安全考虑六、编程示例简要七、与类似技术对比WebSocket 是一种在单个 TCP 连接上进行全双工通信的网络协议由 HTML5 规范引入旨在解决传统 HTTP 协议在实时通信场景中的局限性。一、背景与动机传统的 Web 应用基于 HTTP/1.1采用“请求-响应”模型客户端如浏览器发起请求服务器处理后返回响应连接随即关闭。这种模式不适合需要服务器主动推送数据或低延迟双向通信的场景如聊天应用、实时游戏、股票行情、协同编辑等。为实现“伪实时”早期常采用轮询polling或长轮询long polling但这些方法存在高延迟高开销频繁建立连接、重复头部服务器资源浪费。WebSocket 正是为了解决这些问题而设计。二、核心特点全双工通信客户端和服务器可同时独立发送数据无需等待对方响应。持久连接一次握手建立连接后连接保持打开直到显式关闭。低开销数据帧头部极小2~14 字节相比 HTTP 的冗余头部更高效。基于 TCP可靠、有序、面向连接。兼容 HTTP 端口默认使用ws://80 端口或wss://443 端口加密便于穿越防火墙和代理。三、工作流程握手阶段HTTP Upgrade客户端通过 HTTP 发起升级请求GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ Sec-WebSocket-Version: 13服务器响应HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbKxOo握手成功后底层 TCP 连接转为 WebSocket 协议。数据传输阶段双方可通过 WebSocket 帧frame自由发送文本UTF-8或二进制数据。关闭连接任一方可发送关闭帧close frame实现优雅关闭。四、应用场景实时聊天/消息系统在线多人游戏实时仪表盘监控、金融数据协同文档编辑如 Google DocsIoT 设备状态同步五、安全考虑使用wss://WebSocket Secure防止中间人攻击验证Origin头防止跨站 WebSocket 劫持CSWSH对用户身份进行认证通常在握手前通过 Cookie 或 Token限制连接数防 DoS。六、编程示例简要前端JavaScriptconstwsnewWebSocket(wss://example.com/socket);ws.onopen()ws.send(Hello Server);ws.onmessage(event)console.log(Received:,event.data);ws.onclose()console.log(Connection closed);后端Python websockets 库importasyncioimportwebsocketsasyncdefhandler(websocket,path):asyncformessageinwebsocket:awaitwebsocket.send(fEcho:{message})start_serverwebsockets.serve(handler,localhost,8765)asyncio.get_event_loop().run_until_complete(start_server)asyncio.get_event_loop().run_forever()七、与类似技术对比技术双向通信持久连接开销浏览器支持HTTP 轮询❌❌高✅长轮询半双工❌中✅Server-Sent Events (SSE)单向服务器→客户端✅低✅除 IEWebSocket✅✅极低✅现代浏览器WebSocket 已成为现代 Web 实时通信的事实标准广泛用于需要低延迟、高频率交互的应用中。