WebSocket
你可能会说
聊天室怎么实时收到别人的新消息?
握手后保持打开的双向连接,双方可以互相发送消息聊天或协同编辑需要双方频繁交换消息时,WebSocket 握手成功后会通过同一连接双向传消息。它不是一条更长的 HTTP 请求;HTTP/1.1 可以复用连接,HTTP/2 可以在连接上多路复用。WebSocket 连接仍可能中断,需按场景设计重连和状态恢复。
先知道
也常被叫作WebSocket长连接双向连接
延伸阅读 · 权威出处
聊天室怎么实时收到别人的新消息?
有新消息吗?答没有问有新消息吗?答有 1 条每次都要重新问;间隔内到达的消息要等下一轮轮询间隔内到达的消息有延迟;间隔越短越费请求。
轮询会等下一轮检查:新消息可能要等下一轮才被发现;间隔越短,请求越多。
WebSocket 可主动发送消息:连接可让服务器主动发送消息;实际延迟仍受服务端处理、队列、网络和客户端渲染影响。
双向都能发:不只是服务器推:客户端也可以随时通过同一条连接发消息。
聊天室现在每秒轮询新消息。请改用 WebSocket:连接建立后保持打开,新消息到达即推送。断线要自动重连;改完后在开发者工具的 Network 面板确认是长连接,并测试断网恢复后能继续收到消息。