• 0
  • 0
分享

WebSocket 的重要性


a36e6821661d41c2b7579085806b7718_tplv-k3u1fbpfcp-zoom-1.png

Websocket 是一种新型的协议,它允许客户端和服务器之间建立实时的双向通信通道。相比于 HTTP 协议来说,它具有以下优点:

  • 实时性: Websocket支持服务器主动向客户端推送消息,使得客户端能够实时接收到服务器的事件和数据变化。

  • 双向性: Websocket支持全双工通信,即客户端和服务器可以同时发送和接收数据。

  • 节约资源: 相比于轮询机制,Websocket只需要建立一次连接即可实现实时通信,这样可以减少服务器的压力和网络流量。

  • 兼容性: Websocket 协议能够支持所有主流的浏览器和移动设备。

Websocket 协议在实时通信、在线聊天、多人游戏、实时监控等场景下具有广泛的应用价值。

WebSocket 和 HTTP 的区别

HTTP 是一个无状态的协议,使客户端向服务器请求资源,并从服务器接收响应。客户端使用 HTTP 请求/响应语法,即请求发送到服务器之后,服务器向客户端返回 HTML 文件、图像和其他媒体内容。

WebSocket 通信协议尝试在较大范围内改进 Web 实时通信和插件技术,并提供全双工、基于事件的通信而无需采用低效的轮询方式。开发人员可以从 Web 浏览器的 JS 端轻松地创建 WebSocket 连接并发送数据,进而实现应用程序的实时数据传输的实现。

由于 WebSocket 是面向消息的,因此它更加适用于实时通信,而 HTTP 更适用于请求和服务器-客户端通信的响应。

5dd3fd35b4404c8c954bcbf98e6a189e_tplv-k3u1fbpfcp-zoom-1.png


区别总结

  • 连接方式不同: HTTP 是一种单向请求-响应协议,每次请求需要重新建立连接,而 WebSocket 是一种双向通信协议,使用长连接实现数据实时推送。

  • 数据传输方式不同: HTTP 协议中的数据传输是文本格式的,而 WebSocket 可以传输文本和二进制数据。

  • 通信类型不同: HTTP 主要用于客户端和服务器之间的请求和响应,如浏览器请求网页和服务器返回网页的 HTML 文件。WebSocket 可以实现双向通信,常常用于实时通信场景。

  • 性能方面不同: 由于 HTTP 的每次请求都需要建立连接和断开连接,而 WebSocket 可以在一次连接上进行多次通信,WebSocket 在性能上比 HTTP 有优势。

1ca7c46f22314e42af7ebf88d3a06514_tplv-k3u1fbpfcp-zoom-1.png

WebSocket 和 TCP 的区别

WebSocket 和 HTTP 都是基于 TCP 协议的应用层协议。

  • 层次结构: WebSocket 是应用层协议,而 TCP 是传输层协议。

  • 协议特点: TCP 是一种面向连接的协议,使用三次握手建立连接,提供可靠的数据传输。而 WebSocket 是一种无状态的协议,使用 HTTP 协议建立连接,可以进行双向通信,WebSocket 的数据传输比 TCP 更加轻量级。

  • 数据格式: TCP 传输的数据需要自定义数据格式,而 WebSocket 可以支持多种数据格式,如 JSON、XML、二进制等。WebSocket 数据格式化可以更好的支持 Web 应用开发。

连接方式: TCP 连接的是物理地址和端口号,而 WebSocket 连接的是 URL 地址和端口号。


WebSocket 和 Socket 的区别

协议不同

Socket 是基于传输层 TCP 协议的,而 Websocket 是基于 HTTP 协议的。Socket 通信是通过 Socket 套接字来实现的,而 Websocket 通信是通过 HTTP 的握手过程实现的。

持久化连接

传统的 Socket 通信是基于短连接的,通信完成后即断开连接。而 Websocket 将 HTTP 协议升级后,实现了长连接,即建立连接后可以持续通信,避免了客户端与服务端频繁连接和断开连接的过程。

双向通信

传统的 Socket 通信只支持单向通信,即客户端向服务端发送请求,服务端进行响应。而 Websocket 可以实现双向通信,即客户端和服务端都可以发起消息,实时通信效果更佳。

效率

Socket 通信具有高效性和实时性,因为传输数据时没有 HTTP 协议的头信息,而 Websocket 除了HTTP协议头之外,还需要发送额外的数据,因此通信效率相对较低。

应用场景

Socket 适用于实时传输数据,例如在线游戏、聊天室等需要快速交换数据的场景。而 Websocket 适用于需要长时间保持连接的场景,例如在线音视频、远程控制等。

更多详细介绍可以看:WebSocket 和 Socket 有什么区别?看这里就够了

JavaScript 中的 WebSocket

在前端 Web 应用中使用 WebSocket 对象可以非常方便地实现双向实时通信。具体来说,需要以下步骤:

1、创建 WebSocket 对象,并指定连接的 URL 地址。

let socket = new WebSocket('ws://localhost:8080');监听 WebSocket 对象的各种事件,并编写相应的回调函数来处理事件:
Copy codesocket.onopen = function(event) {
   console.log('连接成功');};socket.onerror = function(event) {
   console.log('连接出错');};socket.onmessage = function(event) {
   console.log('收到消息:' + event.data);};socket.onclose = function(event) {
   console.log('连接关闭');};

2、发送消息到服务器端:

socket.send('Hello, WebSocket!');

3、关闭WebSocket连接:

socket.close();

需要注意的是,WebSocket 对象也需要与服务器进行握手,以完成连接的建立和维护。通常,服务器端的实现需要支持 WebSocket 协议,例如 Node.js 中的 ws 或 Java 中的 Jetty。

WebSocket 对象提供了丰富的 API,包括发送数据、关闭连接、获取连接状态等等。在使用 WebSocket 进行开发时,应该熟悉这些 API,并编写高效的消息传输代码,以确保 WebSocket 协议的高效、稳定和安全。

知识扩展:


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1.Api文档导入  如果你的旧项目数据存储在其他软件上,那么迁移到apifox也很简单,apifox支持多种格式的接口文档的导入。  导入完毕之后,Apifox会将实体类数据自动生成一个数据结构,方便后面复用。  2.后端接口测试  成功导入后的项目API文档如图所示,接口的请求方法,url和参数 会自动填写到界面中,测试人员只需要手动修改相应的参数即可对单个接口进行测试。 对于接口测试常规涉及到的需求 1)校验接口传参是否合理(少传,漏传,多传,边界值测试和空值测试等); 2)response返回值是否符合api文档约定,数据是否存在异常,是否有做容错机制 3)接口的安全性测试等 Ap...
            0 0 1652
            分享
          • 引言进入二十一世纪之后,硬件元器件得到了飞速发展,从而也是的嵌入式软件的功能更加强大和复杂.随之而来的也是嵌入式软件测试工作的加重,传统的软件测试技术已经难以满足嵌入式软件越来越复杂的需求.而目前,市场上已经有较多的传统软件自动化测试技术,如何在这些技术的基础上进行改进,从而能够适应嵌入式软件环境,从而实现嵌入式软件的自动化测试,是嵌入式软件发展的重要方向.1.嵌入式软件自动化测试平台分析嵌入式软件的自动化测试即利用脚本来自动化驱动嵌入式软件的运行,并且自动收集相关数据进行分析,最终生成相应的测试报告.虽然,嵌入式软件的自动化测试流程与一般PC机应用软件的自动化测试流程相同。但是,由于嵌入式软...
            0 0 2543
            分享
          •   从苹果(193.62,0.87,0.45%)官网获悉,苹果“我的照片流”服务今日正式关闭,“我的照片流”中将不再保留任何照片。用户如果想将拍摄的照片和视频在所有设备上都保持最新并储存在iCloud中,则可使用“iCloud照片”服务。  据悉,“MyPhotoStream”服务于2011年由史蒂夫?乔布斯作为iCloud的一部分推出,可以自动将一个设备上的照片和视频上传到另一个设备上,无需手动同步。这项功能不占用免费的5GBiCloud存储空间,但只能存储1000个文件,并且不支持全分辨率同步。  苹果公司后来推出了iCloudPhotoLibrary(现在称为iCloudPhotos),...
            0 0 509
            分享
          •   质量监控的范围和概念  1.用户体验是否舒服:  以用户的角度对产品进行使用,以找到不合理,体验差的功能点。  2.产品设计是否符合:  以产品的角度对产品设计的完整性进行检验。  3.性能状况是否稳定:  以系统运维的角度找到产品性能的瓶颈。  4.逻辑设计是否存在漏洞:  以开发人员的角度检测产品的逻辑合理性。  5.系统安全,数据安全是否有保障:  以不法分子,黑客的角度对产品进行攻击,以检测产品的安全性。  测试用例设计方法:  软测行内共识的设计方法不再赘述,转帖一篇文章小白们可以自己去看:  测试用例的几种常见设计方法:  已有的常规方法我们可以照搬照用,但是从质量管理的整体性...
            11 10 1418
            分享
          •   据报道,当地时间周三,OpenAI表示,已经修复ChatGPT一个明显漏洞,因为该漏洞的存在,少数用户可以看到其它用户与AI对话历史记录的标题。  OpenAI首席执行官山姆·阿尔特曼也发推文称,因为修复漏洞,太平洋标准时间3月20日部分时间无法查看个人聊天历史记录。  自去年推出以来ChatGPT快速成长,许多人试用。上周OpenAI将GPT-3.5升级到GPT-4,11月30日之前向用户开放。  市场分析咨询公司Similarweb认为,微软已经向OpenAI投入巨资,必应搜索整合ChatGPT能让搜索变得更有魅力,吸引更多人使用。作者:佚名原文链接:新浪科技_新浪网(sina.com...
            0 0 609
            分享
      • 51testing软件测试圈微信