什么是WebSocket? 答:WebSocket是一种网络传输协议,可在单个TCP连接上进行全双工通信,位于OSI模型的应用层。
特点:
1. TCP连接,与HTTP协议兼容
2. 双向通信,主动推送(服务端向客户端)
3. 无同源限制,协议标识符是ws(加密wss)
WebSocket:
1. 支持端对端通讯
2. 可以由client发起,也可以由server发起
3. 用于:消息通知,直播间讨论区,聊天室,协同编辑
WebSocket连接过程
1. 先发起一个 HTTP 请求
2. 成功之后再升级到 WebSocket 协议,再通讯
WebSocket和HTTP协议区别
1. WebSocket 协议名是 ws://, 可双端发起请求
2. WebSocket 没有跨域限制
3. 通过 send 和 onmessage 通讯 (HTTP通过req和res)
扩展:实际项目推荐 socket.io, API更简洁
连环问:WebSocket和HTTP长轮询的区别?
1. HTTP 长轮询:客户端发起请求,服务端阻塞,不会立即返回
2.WebSocket:客户端可发起请求,服务端也可发起请求