服务端向客户端推送消息技术之websocket的介绍

服务端向客户端推送消息技术之websocket的介绍

凯哥java 凯哥java
websocket的介绍java

在讲解WebSocket前,咱们先来看看下面这种场景,在HTTP协议下,怎么实现。web

需求:浏览器

在网站中,要实现简单的聊天,这种状况怎么实现呢?以下图:
服务端向客户端推送消息技术之websocket的介绍
当发送私信的时候,若是要求实时同步的话,能够先让消息入库,等对方登录以后,查询显示便可。以下图:
服务端向客户端推送消息技术之websocket的介绍服务器

但是如今,须要实时消息,怎么办?websocket

最简单的一种方式,就是写个定时任务,轮询查询去。以下图:markdown

服务端向客户端推送消息技术之websocket的介绍
虽然这样能够实现,咱们能够看到,每隔必定时间,就会去调用服务器接口,查询一次。这样很浪费系统资源的。咱们来看看HTTP协议:socket

服务端向客户端推送消息技术之websocket的介绍
如上图:ide

客户端和服务器创建链接后,发送请求数据给服务器;网站

服务器接收请求后,处理完成并更加请求返回响应的呼做为回应;3d

客户端获得数据后,与服务器断开链接。

这就是HTTP三次握手。是基于TCP/IP的

从上图中,咱们能够看到,http协议是典型的拉取方式,短连接的;是客户端向服务器拉取数据的。若是,客户端不发送请求,那么服务器的数据就不会主动给客户的的。

咱们的需求是要实现即时聊天的。由于要即时,因此,不能考客户端拉取数据,就须要使用服务器主动给客户端推送数据的。就须要客户端和服务器实时保持着联系,也就是长链接。这种状况下,咱们应该使用哪一种技术来实现呢?实现方式有不少种,这里咱们就用websocket来实现。

本文来源:凯哥Java(kaigejava)

咱们来看看WebSocket介绍:

WebSocket 是HTML5一种新的协议。它实现了浏览器与服务器全双工通讯(full-duplex)。一开始的握手须要借助

HTTP请求完成。WebSocket是真正实现了全双工通讯的服务器向客户端推的互联网技术。它是一种在单个TCP连

接上进行全双工通信协议。Websocket通讯协议与2011年倍IETF定为标准RFC 6455,Websocket API被W3C定为标准。

什么是全双工?什么是单工?

全双工(Full Duplex)是通信传输的一个术语。通讯容许数据在两个方向上同时传输,它在能力上至关

于两个单工通讯方式的结合。全双工指能够同时(瞬时)进行信号的双向传输(A→B且B→A)。指

A→B的同时B→A,是瞬时同步的。

单工、半双工(Half Duplex),所谓半双工就是指一个时间段内只有一个动做发生,举个简单例子,

一条窄窄的马路,同时只能有一辆车经过,当目前有两辆车对开,这种状况下就只能一辆先过,等到头

儿后另外一辆再开,这个例子就形象的说明了半双工的原理。早期的对讲机、以及早期集线器等设备都是基于半双工的产品。随着技术的不断进步,半双工会逐渐退出。

http与websocket的区别:

http:

经过上面讲解,咱们知道http协议是短连接,由于请求以后,都会关闭链接,下次从新请求数据,须要再次打开连接。原理简图图下:
服务端向客户端推送消息技术之websocket的介绍

websocket:

webSocket协议是一种长链接,只须要经过一次请求来初始化连接,而后全部的请求和响应都是经过这个TCP连接

进行通信。简单原理图以下:
服务端向客户端推送消息技术之websocket的介绍

各大浏览器对websocket支持状况:
服务端向客户端推送消息技术之websocket的介绍

服务器要求:

服务器支持状况:Tomcat 7.0.47+以上才支持。

相关文章
相关标签/搜索