面试题答案
一键面试优势
- 持久连接:
- HTTP协议是无状态的,每次请求 - 响应完成后连接就会关闭。对于物联网设备间需要持续交换数据的场景,频繁建立和关闭连接会带来额外开销。而WebSocket协议在建立连接后,通信双方可以在该连接上持续进行数据传输,减少了连接建立的开销,提高了通信效率。
- 双向通信:
- HTTP协议主要是客户端发起请求,服务器响应的模式。在物联网中,有时需要服务器主动向设备推送数据,如远程控制设备状态更新等,HTTP这种单向请求模式实现起来较复杂,常需轮询等方式模拟。WebSocket协议支持双向通信,服务器和客户端都可以主动发送消息,能更及时地进行数据交互,适合物联网实时控制和监控的需求。
- 数据开销小:
- HTTP协议头部信息较多,即使传输少量数据也会携带大量元数据。WebSocket协议的头部相对简单,在传输相同数据量时,WebSocket的数据开销更小,对于资源受限的物联网设备来说,更节省网络带宽和设备资源。
基本原理
- 握手阶段:
- 客户端通过HTTP请求发起WebSocket连接,请求头中包含特殊字段,如
Upgrade: websocket
等,告知服务器想要建立WebSocket连接。 - 服务器收到请求后,如果支持WebSocket协议,会返回101 Switching Protocols响应,表明同意切换协议,完成握手过程,此时TCP连接从HTTP协议转换为WebSocket协议。
- 客户端通过HTTP请求发起WebSocket连接,请求头中包含特殊字段,如
- 数据传输阶段:
- 握手成功后,双方通过这个持久的TCP连接进行数据传输。WebSocket数据帧格式包含操作码、掩码等字段,操作码表示数据类型(如文本、二进制等),掩码用于数据加密。双方按照约定的帧格式在连接上互相发送和接收数据,实现实时通信。