http(应用层协议)
- http1.0最大的问题,传送一次资源建立一次http连接。三次握手和四次挥手带来的性能消耗。
- HTTP1.1:长连接,一次http请求,发送多次http资源。
- HTTP2.0:解决了连接的1对1,一个连接可以有多个请求。
- 局限性:只能由客户端联系服务端,客户端不联系服务端,服务端就不会主动给客户端发送。
webscocket(html5)
- 完成一次握手,建立持久连接。进行双向传输。
- 解决问题:服务端有消息可以主动发送给客户端。
- websocket和http都是应用层协议。
- 和HTTP相同的端口:默认为80,https为443。
- 缺点:利用率可能不高。
http和websocket的区别
相同点:
- 都是应用层的协议
- 都是基于tcp,都是可靠协议
不同点:
- websocket是持久化的连接,http不是(keep-alive是有时间限制的)
- websocket是双向的,而http是单向的。
- websocket服务端可以主动发送给客户端,http不能。
长连接和短连接
- 短连接:在HTTP1.0中,客户端发送请求,服务器接收请求,双方建立连接,服务器响应资源,请求结束。
- 长连接:在HTTP 1.1,客户端发出请求,服务端接收请求,双方建立连接,在服务端没有返回之前保持连接,当客户端再发送请求时,它会使用同一个连接。
这一直继续到客户端或服务器端认为会话已经结束,其中一方中断连接。
- 优势:减少了连接请求,降低TCP阻塞,减少了延迟,实时性较好。
- 劣势:可能会影响性能,因为它在文件被请求之后还保持了不必要的连接很长时间。
websocket和ajax的区别
- Ajax:异步xml和JavaScript。是一种创建交互网页的的技术
websocket:基于HTML5的新技术,实现了浏览器和服务器全双工、持久的连接。 - Ajax:短连接,数据发送和接收完成就结束。
websocket:长连接,会话一直保持 - ajax适合非实时性,websocket适合实时性连接。
- ajax由客户端发起,socket谁发起都可以。
- 最重要的是ajax要不断去轮询询问服务端,看有没有新的服务端信息。
websocket可以代替ajax吗?
分情况
- 部分浏览器可能不支持
- 交互不频繁的没有必要