美文网首页从零学Java笔录凯哥Java-工作总结
服务端向客户端推送消息技术之websocket的介绍

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

作者: 凯哥Java | 来源:发表于2019-10-22 09:21 被阅读0次

    websocket的介绍

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

    需求:

    在网站中,要实现简单的聊天,这种情况怎么实现呢?如下图:

    当发送私信的时候,如果要求实时同步的话,可以先让消息入库,等对方登陆之后,查询显示即可。如下图:

    可是现在,需要实时消息,怎么办?

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

    虽然这样可以实现,我们可以看到,每隔一定时间,就会去调用服务器接口,查询一次。这样很浪费系统资源的。我们来看看HTTP协议:

    如上图:

    客户端和服务器建立连接后,发送请求数据给服务器;

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

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

    这就是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协议是一种长连接,只需要通过一次请求来初始化链接,然后所有的请求和响应都是通过这个TCP链接

    进行通讯。简单原理图如下:

    各大浏览器对websocket支持情况:

    服务器要求:

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

    相关文章

      网友评论

        本文标题:服务端向客户端推送消息技术之websocket的介绍

        本文链接:https://www.haomeiwen.com/subject/gibfvctx.html