1.什么是全双工、半双工、单工通信
全双工:在发送消息的同时还可以接收消息,websocket就是这样,类似打电话一样
半双工:同一时间段只能发送或接收消息,普通http协议是这样的,类似微信语音消息
单工:只能由一方向另一方发送消息,类似电视、广播
2.websocket与普通http连接区别
通信方式不同
普通http连接是半双工通信,websocket是全双工通信,它不用非等客户端向服务端请求了才能被动返回数据,服务端可以主动推送消息到客户端,一旦客户端与服务器之间建立起了 WebSocket 连接,之后所有的通信都依靠这个协议进行。由于 WebSocket 是基于 HTTP 协议的,所以连接的发起方还是客户端,而一旦建立起 WebSocket 连接,不论是服务器还是客户端,都可以直接向对方发送报文,即 JSON、XML、HTML、图片等任意格式的数据。
建立方式不同
为了实现 WebSocket 的通信,在 HTTP 连接建立之后,还需要完成一次「握手」的步骤,WebSocket 复用了 HTTP 的握手通道,要建立 WebSocket 通信,需要在连接发起方的 HTTP 请求报文中通过 Upgrade
字段告知服务器通信协议升级到 Websocket,然后通过 Sec-WebSocket-*
扩展字段提供 WebSocket 的协议、版本、键值等信息
长连接