`

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

 
阅读更多

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+以上才支持。

欢迎关注凯哥:

分享到:
评论

相关推荐

    SuperSocket服务端(WinForm),可以给客户端发送消息

    SuperSocket服务端 1.用WinForm实现。 2.可以给客户端发送消息。 注意:nuget安装包SuperSocket 基于1.6.6.1、SuperSocket.Engine 基于1.6.6.1、log4net最新即可

    python-websocket-socket 消息推送

    在本主题中,我们将深入探讨“python-websocket-socket 消息推送”的相关知识点。 1. WebSocket API: WebSocket 是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在任何方向...

    android即时通讯消息推送包含服务端和客户端

    总之,本项目覆盖了即时通讯的全栈开发,从服务端到客户端,从消息推送至用户交互,都进行了详尽的实现。通过这个项目,开发者不仅可以学习到Android即时通讯系统的构建,还能掌握服务端开发、消息队列、WebSocket...

    c# winform快速建websocket客户端源码 wpf快速搭建websocket客户端 c#简单建立websocket

    WebSocket协议作为一种在单个TCP连接上进行全双工通信的技术,使得客户端和服务器之间能够进行低延迟、高效率的数据交换,非常适合于实时推送通知、在线聊天、游戏实时更新等场景。使用C# WinForm结合WebSocket...

    Spring Boot 集成 WebSocket 实现服务端推送消息到客户端.docx

    WebSocket 是一种基于 TCP 的协议,它为客户端和服务器提供全双工通信,即允许服务器主动向客户端推送数据,不同于传统的 HTTP 协议,后者需要客户端发起请求后服务器才能响应。这种特性使得 WebSocket 成为实时应用...

    websocket实现服务端与客户端通信

    WebSocket提供了理想的推送机制,因为一旦连接建立,服务器就能主动向客户端发送数据,而不需要客户端不断轮询。 总的来说,WebSocket是构建高效实时应用的重要工具,它可以显著减少延迟,提高用户体验。通过理解和...

    WebSocket实现服务器客户端带winform客户端

    C#实现WebSocket源码(c#写的服务端html写的客户端) ...它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。

    websocket服务端 客户端源码

    在传统的HTTP协议中,客户端与服务器之间的通信是基于请求-响应模式的,而WebSocket则打破了这种限制,允许服务器主动向客户端推送数据。 本资源包含的是Java实现的WebSocket服务端和客户端的源码,这对于学习和...

    delphi 实现 WebSocket

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行全双工通信,即数据可以在两个方向上同时传输,极大地提高了实时性。在Delphi中实现WebSocket,我们可以利用第三方库或者自行编写网络通信...

    WebSocket安卓客户端实现详解(二)--客户端发送请求

    WebSocket是Web应用中的一种实时通信协议,它允许服务器与客户端之间进行双向通信,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。在安卓客户端实现WebSocket时,我们需要了解和掌握以下几个关键...

    C#实现WebSocket源码(c#写的服务端html写的客户端)

    它的最大特点就是,服务器可以主动向客户端推送信息,客户端也可以主动向服务器发送信息,是真正的双向平等对话,属于服务器推送技术的一种。 其他特点包括: (1)建立在 TCP 协议之上,服务器端的实现比较容易。 ...

    使用QT进行websocket 客户端和服务端通讯示例

    WebSocket是一种在客户端和服务器之间建立长连接的协议,它提供了双向通信能力,使得服务器可以主动向客户端推送数据。在IT领域,尤其是Web开发中,WebSocket已经成为实时应用的标准技术。QT作为一个跨平台的C++开发...

    使用webSocket简单实现群发消息和指定用户发送消息

    WebSocket是一种在客户端和服务器之间建立持久连接的协议,它允许双方进行双向通信,即服务器可以主动向客户端推送数据,而不仅仅是响应客户端的请求。在Web应用中,WebSocket为实时通信提供了强大的支持,如在线...

    pushlet实现服务器端向客户端推送消息总结

    以下是关于 Pushlet 实现服务器端向客户端推送消息的详细知识点: 1. **实现方式**: - **定时推送**:通过配置文件设定定时任务,让服务器定期向客户端发送信息。这通常涉及到调度器和后台服务的配合,以在特定...

    spring boot+vue+websocket带token身份认证推送消息实现

    消息推送的核心在于WebSocket服务端接收到消息后,根据业务逻辑选择合适的目标用户或用户组,然后通过WebSocket会话向客户端推送消息。 ```java // 消息推送逻辑 public void pushMessageToUser(Integer userId, ...

    SpringBoot WebSocket消息推送(群发和指定到个人或多人)

    WebSocket是Web交互技术的一种,它允许服务器与客户端之间进行全双工通信,即服务器不仅可以向客户端推送信息,客户端也可以主动向服务器发送数据。在Spring Boot框架下,WebSocket的使用大大简化了开发过程,使得...

    websocket消息实时推送

    实时推送部分,WebSocket允许服务器主动向客户端推送消息,而无需客户端持续发送轮询请求。这样,当后台有新数据或事件发生时,服务器可以直接将这些信息推送到已连接的客户端,避免了不必要的网络开销和延迟。 在...

    websocket 客户端与服务端数据传输

    websocket 客户端与服务端数据传输 [removed] socket = new WebSocket('ws://127.0.0.1:8900','chat'); console.log(socket) socket.onopen = function(){ console.log('connected success'); socket.send('...

    SignalR Winform服务端、客户端实现,附带web端调用Demo

    这个库使得服务器可以向客户端推送数据,而不仅仅是响应客户端请求,从而实现了Websocket、Server-Sent Events(SSE)和长期轮询等多种实时通信机制的抽象。 在“SignalR Winform服务端、客户端实现,附带web端调用...

    WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket是Web交互技术的一种,它为双向通信提供了标准协议,使得服务器可以主动向客户端推送数据,解决了HTTP协议的局限性。在本篇文章中,我们将深入探讨如何在Android客户端实现WebSocket,特别是服务端主动通知...

Global site tag (gtag.js) - Google Analytics