Android开发 WebSocket
主要介绍了WebSocket的特点,在Http和WebSocket之间如何做技术选型,以及实现通信。
安卓WebSocket的使用
本文章主要针对以下三个问题
1.技术选型,什么情况下要选择WebSocket? WebSocket和Http有什么区别?
在开发的过程中,我们常常会使用到网络编程,对于一些简单的需求,如新闻数据展示这类较为固定的数据获取需求,使用http就可以完全满足。Http通信过程是客户端通过浏览器发出一个请求,服务器端接收请求后进行处理并返回结果给客户端,客户端浏览器将信息呈现。对于实时要求高、海量并发的应用来说显得捉襟见肘。
但如果数据的更新频率较高,对实时性的有一定要求,那么http就不符合需要了。这时候,WebSocket就派上了用处。
WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。这样一来,客户端就可以按照一定频率接收服务器的试试数据。
2.WebSocket的特点和原理
特点
WebSocket是HTML5下一种新的协议。它实现了浏览器与服务器全双工通信,能更好的节省服务器资源和带宽并达到实时通讯的目的。它与HTTP一样通过已建立的TCP连接来传输数据,但是它和HTTP最大不同是:
- WebSocket是一种双向通信协议。在建立连接后,WebSocket服务器端和客户端都能主动向对方发送或接收数据,就像Socket一样;
- WebSocket需要像TCP一样,先建立连接,连接成功后才能相互通信。
传统HTTP客户端与服务器请求响应模式如下图所示:
WebSocket模式客户端与服务器请求响应模式如下图:
相对于传统HTTP每次请求-应答都需要客户端与服务端建立连接的模式,WebSocket是类似Socket的TCP长连接通讯模式。一旦WebSocket连接建立后,后续数据都以帧序列的形式传输。在客户端断开WebSocket连接或Server端中断连接前,不需要客户端和服务端重新发起连接请求。这样一来就极大的节省了网络带宽资源的消耗,有明显的性能优势,且客户端发送和接受消息是在同一个持久连接上发起,实时性优势明显。
原理
因为它是基于浏览器端的web技术,那么它的通信肯定少不了http,websocket本身虽然也是一种新的应用层协议,但是它也不能够脱离http而单独存在。
我们在客户端构建一个websocket实例,并且为它绑定一个需要连接到的服务器地址,当客户端连接服务端的时候,会向服务端发送一个http的get请求报文。
报文中有一个upgrade首部,它的作用是告诉服务端需要将通信协议切换到websocket,如果服务端支持websocket协议,那么它就会将自己的通信协议切换到websocket,同时发给客户端一个响应报文头。
返回的状态码为101,表示同意客户端协议转换请求,并将它转换为websocket协议。以上过程都是利用http通信完成的,称之为websocket协议握手(websocket Protocol handshake),进过这握手之后,客户端和服务端就建立了websocket连接,以后的通信走的都是websocket协议了。
websocket提供两种数据传输:文本数据和二进制数据。
3.WebSocket在安卓中的使用示例
未完待续。。。
更多推荐
所有评论(0)