赞
踩
之前没有做web开发,认为web上进行数据传输只依赖http. 后来同事用到websocket, 才知道web上也能用socket. 那为什么出现了websocket?
大家都知道,http是无状态的。一个请求对应一个响应。请求必须由client端发起,如果server端主动向client发送数据怎么办呢?
1. client轮询向serve发送请求,比如每一秒就发送一次请求,查看server端是否有新数据。这样做的问题是什么?因为每发送一次请求,底层tcp需要进行三次握手,就会浪费带宽;同时,频繁的建立很多连接,对server端也会造成压力。针对http 1.0 的这种情况,http1.1进行了改进。有了长连接(persistent connection)的概念。
2. 建立长连接。http 1.1中已经支持长连接了,请参见rfc 2616. 长连接允许在一次连接建立成功后,传输多个数据。比如 在http1.0中需要建立两次或多次连接,http1.1可以将这些数据在一个connection中进行传输,这样就减少了每次都进行三次握手的开销。同时,因为connection是一直保持的,server也可以主动向client发送数据。但是数据一定要是按照http的标准的。http的标准是数据都要有一些header, 所以即使传输一个字节,也都得带着这些header,就会导致在传输过程中,浪费网络带宽。
因此,在这种情况下, websocket就诞生了。websocket主要解决了client和server进行双向通信的问题。那么它的设计时,是如何考虑的?
websocket是基于TCP的协议&#x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。