WebSocket是一种比较新的协议,它是伴随着html5规范而生的,虽然还比较年轻,但大多主流浏览器都已经支持。它使用方便、应用广泛,已经渗透到前后端开发的各种场景中。
对http一问一答中二式流程(就是从所周之的“长轮询”技要啦)的不满,催生了支持双向通信的WebSocket诞生。WebSocket是个不太干净协议。

1问WebSocket:WebSocket协议只能浏览器发起么?
不是。目前此协议的受众的也不仅仅是web开发者。
WebSocket只是一种协议,它和http协议一样,使用类似okhttp的组件,可以在任何地方进行调用,甚至可以借助WebSocket实现RPC框架。
2问WebSocket:WebSocket和HTTP什么关系?
WebSocket和http一样,都是处于OSI模型中的最高层:应用层。
WebSocket借助http协议进行握手,握手成功后,就会变身为TCP通道,从此与http不再相见。
使用netstat或者ss,能够看到对应的连接,它与处于抽象层的socket,在外观上没有区别。
3问WebSocket:WebSocket和长轮询有什么区别?
长轮询,就是客户端发送一个请求,服务端将一直在这个连接上等待(当然有一个超长的超时时间),直到有数据才返回,它依然是一个一问一答的模式。比如著名的comted。
WebSocket在握手成功后,就是全双工的TCP通道,数据可以主动从服务端发送到客户端,处于连接两端的应用没有任何区别。
WebSocket创建的连接和Http的长连接是不一样的。由于Http长连接底层依然是Http协议,所以它还是一问一答,只是Hold住了一条命长点的连接而已

WebSocket作为新型协议,提供了双向通信能力,广泛应用在实时交互场景。它不同于HTTP的长轮询,握手后变为全双工TCP通道。创建WebSocket连接借助HTTP,通过Upgrade和Connection头,数据通过事件通知方式传输。Nginx可以做WebSocket负载均衡,但无法处理跨实例通信。Java服务端实现WebSocket可使用javax.WebSocket或netty-socketio。WebSocket可用于实时通知、数据收集、加密认证及反向控制等场景。
最低0.47元/天 解锁文章
2015

被折叠的 条评论
为什么被折叠?



