为什么有了HTTP传输协议,还需要WebSocket协议?
HTTP传输协议是基于TCP协议的,同一时间里,客户端和服务器只能有一方主动发数据,是半双工通信。
通常,打开某个网页,我们每点击一次网页上的某个选项,前端就会发送一次HTTP通信请求,网站返回一次HTTP通信响应。这种由客户端主动请求,服务器响应的方式满足大部分网页的功能场景。但这种情况下,服务器不会主动给客户端发消息。而类似网页游戏这样的场景,是需要客户端和服务器之间互相主动发大量数据的。
因此,我们需要一个基于TCP的新协议,即新的应用层协议WebSocket。
WebSocket通信协议是一种用于在单个TCP协议连接上进行全双工通信的网络协议。它使用类似于HTTP传输协议的握手来建立连接,然后使用单独的持久连接来进行通信。这种方式使得WebSocket协议可以在浏览器和服务器之间进行实时通信,而不需要多次发送HTTP通信请求来获取数据。这意味着连接是持久的,它一直保持打开,直到有一方主动关闭连接。这使得WebSocket通信协议非常适合用于实时应用程序,因为它不需要不断地建立和关闭连接。
WebSocket协议连接通常在客户端(例如浏览器)和服务器之间建立。客户端发送一个HTTP通信请求来建立连接,然后服务器返回一个确认消息,表示已建立数据传输连接。之后,客户端和服务器可以通过这个连接进行双向通信。客户端可以向服务器发送消息,服务器也可以向客户端发送消息。消息可以是任意的字节数组,并且可以使用任意的格式进行编码。
建立WebSocket传输协议连接
WebSocket传输协议是一种必不可少的客户端—服务器通信工具,需要充分了解其实用性并避免使用场景才能从其最大潜力中获益。
最常见的用途是在实时应用程序开发中,它有助于在客户端持续显示数据。由于后端服务器不断发回此数据,WebSocket通信协议允许在已打开的连接中不间断地推送或传输此数据,使此类数据传输更快,并利用了应用程序的性能。
聊天应用程序开发人员在一次性交换、发布、广播消息等操作中调用WebSocket通信协议。由于使用相同的WebSocket传输协议连接来发送或接收消息,因此通信变得简单、轻量、快捷。
在进行游戏应用程序开发的同时,服务器必须不间断地接收数据,而不要求刷新UI。WebSocket协议在不影响游戏应用程序UI 的情况下实现了这一目标。
从上述几个示例中,我们大概知道了在什么情况下不太适合使用,例如数据交互周期很长,甚至几小时一次的情况或只需要一次性处理数据时,不应采用WebSocket协议。在这些情况下,使用HTTP传输协议是一个明智的选择。
由于HTTP传输协议和WebSocket传输协议都用于应用程序通信,因此人们常常感到困惑,很难从这两者中选择一个。
WebSocket是一种框架双向协议。与此相反,HTTP是一种单向协议,作用于TCP协议之上。由于WebSocket协议能够支持不间断的数据传输,因此主要用于实时应用程序开发。HTTP传输协议是无状态的,用于开发RESTful和SOAP应用程序。SOAP仍然可以使用HTTP传输协议来实现,但是REST被广泛传播和使用。
在WebSocket传输协议中,通信发生在两端,这使其成为更快的协议。在HTTP传输协议中,连接是在一端建立的,这使得它比WebSocket协议有点慢。WebSocket协议使用统一的TCP连接,需要一方终止连接。在它发生之前,连接保持活动状态。HTTP传输协议需要为单独的请求建立不同的连接。请求完成后,连接会自动断开。
HTTP传输协议长轮询
现今对网络数据安全性也存在更多需求,WebSocket协议连接使用的是标准的TCP通信协议连接,因此它可以在任何支持TCP的网络上使用。它使用的是ws://和wss://协议前缀,这些前缀可以与任何域名或IP地址结合使用。
WebSocket协议连接是可以加密的,可以使用TLS(Transport Layer Security,传输层安全)协议来保护数据的安全。这种加密连接使用的是 wss:// 协议前缀,与不加密的连接使用的 ws:// 协议前缀相区别。除此之外,WebSocket传输协议还支持安全握手协议(Secure Handshake Protocol),这使得它可以在浏览器和服务器之间进行加密通信。总的来说,WebSocket传输协议具有较高的安全性,可以保护数据的安全。
另外,需要注意的是,WebSocket传输协议不是基于HTTP传输协议的新协议,因为WebSocket协议只有在建立连接时才用到了HTTP传输协议,升级完成之后就跟HTTP传输协议不再有任何关系。
今天的分享就到这里啦,EBYTE每一天都致力于更好的助力物联化、智能化、自动化的发展,提升资源利用率,更多产品更多资料,感兴趣的小伙伴可以登录我们的太阳集团tcy8722官网和企业公众号(微信号:cdebyte)进行了解,也可以直接拨打400电话咨询技术专员!
7 X 24 销售服务热线
4000-330-990深圳办事处柯经理:18218726658 杭州办事处戴经理:17512568697
常州办事处崔经理:15906110783 南京办事处葛经理:17626012283
业务邮箱:support@cdhanzaichips.com
全国销售投诉电话:19934352316
地址:四川省成都市高新西区西区大道199号B5栋(前台座机:028-61543675)
©© 成都太阳集团tcy8722电子科技有限公司【版权所有】 蜀ICP备27697263号-3