websocket是如何保持长连接的?

想请教一下websocket是如何保持长连接的

阅读 4.1k
3 个回答

WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它使用了浏览器的 JavaScript API 和服务器端的 WebSocket 协议,以实现在单个连接上进行双向通信。

WebSocket 实现了一种叫做握手的机制,来建立和维护长连接。当客户端和服务器端首次连接时,客户端会发送一个 HTTP 请求,其中包含一个额外的 "Upgrade" 头,表示客户端请求将连接升级为 WebSocket 连接。服务器端收到该请求后,如果支持 WebSocket,会发送一个 HTTP 响应,其中包含一个额外的 "Upgrade" 头,表示服务器端同意升级连接。这样,连接就成功升级为 WebSocket 连接。

此后,客户端和服务器端就可以在同一个连接上进行双向通信了。双方可以在任意时刻发送和接收数据,而不需要等待对方的响应。这就是 WebSocket 如何保持长连接的原理

需要注意的是,WebSocket 长连接并不是永久连接,在连接断开后,客户端和服务器端可以重新建立连接。

简单来讲就是http是基于tcp的,tcp本身就是全双工的,websocket只是使用http的upgrade协议升级将http底层的tcp复用了,将协议改为了websocket,从而实现双向通信,增加了心跳来保持链接

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题