大家好,感谢邀请,今天来为大家分享一下为何 HTTP 不足以满足实时应用需求?WebSocket 的优势的问题,以及和的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
Http特点
HTTP 基于TCP 协议。同时,客户端和服务器端只有一侧可以主动发送数据,这是半双工通信。通常,当我们打开网页时,每次点击网页上的某个选项,前端都会发送一个HTTP请求,网站会返回一个HTTP响应。这种客户端主动请求、服务器响应的方式满足了大部分网页的功能场景。
但这种情况下,服务器不会主动向客户端发送消息。像网页游戏这样的场景,需要客户端和服务器端主动向对方发送大量数据。 http 不适用。
WebSocket是什么?
WebSocket 是一种通过单个TCP 连接进行全双工通信的网络协议。它使用类似HTTP的握手来建立连接,然后使用单独的持久连接进行通信。
这种方式允许WebSocket在浏览器和服务器之间进行实时通信,而不需要发送多个HTTP请求来获取数据。这意味着连接是持久的,它保持打开状态,直到一方主动关闭连接。这使得WebSocket 非常适合在实时应用程序中使用,因为它不需要不断建立和关闭连接。
WebSocket怎样建立连接?
WebSocket 连接通常在客户端(例如浏览器)和服务器之间建立。客户端发送HTTP请求建立连接,服务器返回确认消息表明连接已建立。之后,客户端和服务器就可以通过该连接进行双向通信。客户端可以向服务器发送消息,服务器也可以向客户端发送消息。消息可以是任意字节数组,并且可以以任何格式进行编码。
WebSocket的实际用途
最常见的用途是在实时应用程序开发中,它有助于在客户端持续显示数据。由于后端服务器不断发回此数据,WebSocket 允许通过开放连接不间断地推送或传输此数据,从而使此类数据传输速度更快并充分利用应用程序的性能。
聊天应用程序开发人员调用WebSocket 进行一次性交换、发布、广播消息等。由于使用同一个WebSocket 连接来发送或接收消息,因此通信简单、轻量且快速。在开发游戏应用程序时,服务器必须连续接收数据,而无需刷新UI。 WebSocket 在不影响游戏应用程序UI 的情况下实现了这一目标。
从上面的例子我们大致知道什么情况下不适合使用,比如当数据交互周期很长,甚至几个小时一次,或者数据只需要处理一次时,WebSocket协议不应该使用被使用。在这些情况下,使用HTTP协议是明智的选择。由于HTTP 和WebSocket 都用于应用程序通信,因此人们经常会感到困惑,并且很难在两者之间进行选择。
WebSocket 与 HTTP 的选择
WebSocket 是一个框架双向协议。相比之下,HTTP 是一种在TCP 协议之上运行的单向协议。由于WebSocket协议可以支持不间断的数据传输,因此主要用于实时应用程序开发。
在WebSocket 中,通信发生在两端,这使其成为更快的协议。在HTTP 中,连接是在一端建立的,这使得它比WebSocket 慢一点。 WebSocket使用统一的TCP连接,需要一方终止连接。在发生这种情况之前,连接将保持活动状态。 HTTP 需要为各个请求建立不同的连接。请求完成后,连接自动断开。
Http 长轮询
HTTP请求发送后,一般会给服务器一定的时间来响应,比如3秒。如果在指定时间内没有返回响应,则视为超时。
总结
在HTTP/1.1中,只要客户端不询问,服务器就不会应答。基于这个特性,对于登录页面等简单场景,可以使用定时轮询或者长轮询来实现服务器推送(彗星)效果。
很多朋友对于为何 HTTP 不足以满足实时应用需求?WebSocket 的优势和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!
本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6356.html
用户评论
感觉一直以来用的都是AJAX吧,那 WebSocket 真的有啥特别之处?
有16位网友表示赞同!
我听过 WebSocket 的名字,但没真正用过,为啥 HTTP 不行了呢?
有8位网友表示赞同!
终于想了解一下这个说法背后的原因了!HTTP 和 WebSocket 的区别到底在哪里?
有8位网友表示赞同!
"为什么有了 HTTP,还需要WebSocket 协议" 这句提到的问题蛮有意思的。
有15位网友表示赞同!
我估计这篇文章会解释 HTTP 和 WebSocket 的适用场景不同吧。
有8位网友表示赞同!
学习了一下新事物总是好的,看下这篇文章加深一下对它们的理解。
有16位网友表示赞同!
感觉网页聊天用的就是WebSocket啊,这种实时通讯的需求可以用HTTP解决吗?
有17位网友表示赞同!
以前都用 HTTP 处理数据请求,现在这个 WebSocket 听起来很 advanced.
有9位网友表示赞同!
是不是说 HTTPS 和 WebSocket 一样都是要加密传输的类型?
有19位网友表示赞同!
这篇文章应该能让我了解到编程中如何选择合适的通讯协议。
有9位网友表示赞同!
WebSocket 在游戏或者实时数据更新应用中更适合吗?
有11位网友表示赞同!
HTTP 的特点是什么呢?和 WebSocket 比较一下比较好理解吧?
有10位网友表示赞同!
希望这篇文章能够用通俗易懂的语言解释清楚这两个协议的区别。
有12位网友表示赞同!
看到文章标题我就想起那些需要实时互动功能的软件了!
有19位网友表示赞同!
WebSocket 更高效吗?是不是因为 HTTP 的请求和响应机制比较慢?
有17位网友表示赞同!
这篇文章应该能帮助我更好地理解网络通讯技术吧。
有9位网友表示赞同!
对编程不太了解,但是感觉 WebSocket 这个名字听起来很有科技感。
有16位网友表示赞同!
以前都不知道 HTTP 还有这么多细分类别啊!
有13位网友表示赞同!
希望文章不要太复杂,好让我这个入门级的小白能够看懂。
有5位网友表示赞同!
学习新知识确实很不错,说不定以后会有用到的地方呢!
有14位网友表示赞同!