1. 首页 > 快讯

为何 HTTP 不足以满足实时应用需求?WebSocket 的优势

大家好,感谢邀请,今天来为大家分享一下为何 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 的优势和不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

用户评论

坏小子不坏

感觉一直以来用的都是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位网友表示赞同!

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.iotsj.com//kuaixun/6356.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666