一、websocket是什么
答: 它是一种网络通信协议,是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,说白了就是他允许服务器主动给客户端主动发送消息,客户端也可以给服务器发消息
为什么需要websocket? 疑问? 我们已经有了 HTTP 协议,为什么还需要另一个协议?它能带来什么好处?
答:
因为 HTTP 协议有一个缺陷:通信只能由客户端发起。并且websocket是一种持久协议,htpp是非持久协议
现在很多网站都有实时推送的需求,比如聊天,客服咨询等
http能不能实现聊天的效果?
早期没有websocket时,通过ajax轮询,由于http请求,服务器无法给浏览器主动发送数据,因此需要浏览器定时的给服务器发送请求(比如1s一次),服务器把最新的数据响应给浏览器。这种模式的缺点就是浪费性能和资源。http是基于请求的,你只有给了http请求才能给你一个响应,他没有办法主动去给浏览器或者客户端发送消息,所以用来实现聊天是很麻烦的。我们都知道轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开), 因此websocket应运而生。
websocket他只要服务器和客户端建立好链接,那么客户端可以给服务器发送消息,服务器也可以主动给客户端发送消息
简介
WebSocket用于在Web浏览器和服务器之间进行任意的双向数据传输的一种技术。WebSocket协议基于TCP协议实现,包含初始的握手过程,以及后续的多次数据帧双向传输过程。其目的是在WebSocket应用和WebSocket服务器进行频繁双向通信时,可以使服务器避免打开多个HTTP连接进行工作来节约资源,提高了工作效率和资源利用率。
WebSocket目前支持两种统一资源标志符ws和wss,类似于HTTP和HTTPS。
二、实现原理
浏览器发出webSocket的连线请求,服务器发出响应,这个过程称为握手
,握手的过程只需要一次,就可以实现持久连接。
下面的图像解释了WebSocket如何传输数据:
三、它是如何工作的?
要了解WebSocket的工作原理,首先,我们需要了解网站如何在HTTP协议下运行,而且在不使用WebSocket的情况下访问数据。通常,网页通过创建一个HTTP连接来通过HTTP协议提供服务。在这里,数据按照客户端的请求由HTTP协议提供。
每次客户端请求服务器时,每个操作都有一个指定的响应,服务器会相应地发送响应。
简而言之,HTTP协议遵循请求和响应的体系结构,从而导致响应的延迟。
WebSocket协议与HTTP协议的工作方式不同。它可以利用动态呼叫方法实时传输数据。我们只需要使用WebSocket协议从客户端到服务器建立连接即可。WebSocket协议向客户端传输握手信息。它包含了所有必要的信息以识别所需的数据传输信息。
一旦连接建立,通道就打开了,并且在握手之后保持打开状态,以实现持续的通信。因此,服务器可以在不需要请求的情况下向客户端发送数据。因此,每当服务器接收到新数据时,它将在同一通道上将其传输给客户端,无需进一步请求。
要使用Socket开始通信,客户端像HTTP一样提交一个请求,并打开通信通道。之后,维护一个TCP连接来传输数据。
四、我们何时需要使用WebSocket
如果任何Web应用程序的速度非常重要,那么WebSocket将非常有用。那些需要实时数据更新并且需要高速连接但具有低延迟连接的网站应该使用WebSocket。
以下是一些需要与应用程序集成的WebSocket的关键场景示例:
4.1需要实时数据更新的Web应用程序
有些Web应用程序需要实时数据更新,这些应用程序应该具有WebSocket连接。这些Web应用程序使用WebSocket在不刷新页面的情况下向客户端展示数据。在这些应用程序中,后端服务器通过已连接的通道不断发送数据。后端使用相同的已经打开的连接来传输更新的数据。因此,它可以进行快速数据传输并提高应用程序性能。
这样的网站示例包括交易网站和实时体育比分网站。交易网站将持续显示价格和其他数据的波动和变化,而不刷新网页。服务器通过连接的通道连续推送此数据给客户端。
实时体育比分数据应用程序采用类似的方法。随着比分的更新,后端通过连接的套接字通道将其推送出去。
4.2游戏应用程序
在游戏应用程序中,WebSocket协议是必不可少的协议。您可能注意到在玩游戏时出现了许多变化,例如UI在不刷新页面的情况下更新,得分和目录在游戏进行时实时更新。在多人游戏中,您还可以与其他玩家聊天。这一切都是WebSocket实现的结果。因此,在游戏应用程序中,它非常有助于提供无缝的用户界面。
4.3聊天应用程序
现在,聊天应用程序非常流行,可以在运行时共享媒体和内容,而且它们甚至不刷新页面。此外,它们还提供了跟踪共享消息和媒体的功能,无论是已经发送、已阅读还是下一个用户采取了什么行动。想象一下,通过实现WebSocket,这一切都是可能的。
在聊天应用程序中,WebSocket在连接打开时建立连接。之后,它在用户之间交换、发布和广播消息和媒体。为了进行端到端数据传输,它使用同一个WebSocket来传输数据。它通过客户端ID来识别用户。
除了上述讨论的用例之外,还有以下用途:
- 它非常适用于Web应用程序中的实时聊天支持功能。
- 它还用于新闻共享应用程序中的新闻滚动条显示。
- 它还用于显示带有实时股票数据的股票滚动条。
- 它在消息应用程序中使用。
- 它在大多数实时游戏应用程序中使用。
- 社交网络站点之间具有实时互动和即时聊天的情况。
4.4什么时候应避免使用WebSocket?
WebSocket应该用于从网络中处理实时数据更新或连续数据流。如上所述,我们已经讨论了WebSocket的大部分常见用例。因此,如果我们不需要实时处理任何数据,使用WebSocket是没有必要的。
例如,如果我们需要获取旧数据或应用程序提供给客户端时只需获取一次,就不需要使用WebSocket。在这种情况下,我们应该使用HTTP协议来满足用户请求。我们可以使用REST API来满足这些情况下的用户请求。如果数据在服务器上不是实时更新的,那么REST API就足够提供用户请求的服务。
五、WebSocket和HTTP连接之间的区别
在处理网络请求时,最明显的问题是在HTTP和WebSocket之间应该选择哪个?
超文本传输协议(HTTP)是一种客户端-服务器通信协议,它支持请求-响应模型,服务器根据用户的请求作出响应。在HTTP中,客户端可以是向服务器发送请求的Web浏览器。它将是发起通信的第一个人,服务器将对相应的请求进行响应。一旦请求提供服务,连接将被关闭。
在这里,我们讨论了两种协议之间的一些关键区别,这将清楚地说明在哪些条件下应该使用WebSocket和HTTP连接。
5.1HTTP的用途:
以下是HTTP协议的一些常见用例:
- HTTP协议最常见的用途是在静态网站中根据用户请求显示一些数据或信息。
- 在不需要频繁更新数据的应用程序中使用。
- 处理可缓存资源方面的HTTP请求非常适用,我们需要存储用户行为以供将来的响应。
5.2Web Socket的用途:
以下是Web Socket协议的一些常见用例:
Web Socket建议在需要实时数据流或信息流的应用程序中使用,例如实时体育新闻源或聊天应用程序。
它非常适用于在数据库更新时进行动态数据传输并期望频繁更新的应用程序。
社交媒体应用程序需要与多个用户建立连接,在这类应用程序中,Socket将帮助客户端始终追踪更新。
总结:
WebSocket是一种先进的技术,可以在客户端和服务器之间打开交互式的双向通信。通过使用WebSocket API,我们可以向服务器发送信息并接收实时响应,而无需轮询服务器以获取响应。它允许双向数据传输,即我们可以同时将数据从客户端传输到服务器,反之亦然。
超文本传输协议(HTTP)是一种客户端-服务器通信协议,支持请求-响应模型,服务器会根据用户的请求进行响应。在HTTP中,客户端可以是发送请求到服务器的Web浏览器。它将是最先发起通信的人,服务器将对相应的请求作出回应。一旦请求得到服务,连接将被关闭。
在这里,我们讨论了WebSocket的定义和用途。此外,我们还讨论了它与HTTP协议的区别及其用例。