WebSocket--技术文档--架构体系--《WebSocket实现原理以及关键组件》

WebSocket产生背景

简单的说,WebSocket协议之前,双工通信是通过多个http链接来实现,这导致了效率低下。WebSocket解决了这个问题。下面是标准RFC6455中的产生背景概述。

长久以来, 创建实现客户端和用户端之间双工通讯的web app都会造成HTTP轮询的滥用: 客户端向主机不断发送不同的HTTP呼叫来进行询问。

这会导致一系列的问题:

  • 1.服务器被迫为每个客户端使用许多不同的底层TCP连接:一个用于向客户端发送信息,其它用于接收每个传入消息。
  • 2.有些协议有很高的开销,每一个客户端和服务器之间都有HTTP头。
  • 3.客户端脚本被迫维护从传出连接到传入连接的映射来追踪回复。

一个更简单的解决方案是使用单个TCP连接双向通信。 这就是WebSocket协议所提供的功能。 结合WebSocket API ,WebSocket协议提供了一个用来替代HTTP轮询实现网页到远程主机的双向通信的方法。

WebSocket协议被设计来取代用HTTP作为传输层的双向通讯技术,这些技术只能牺牲效率和可依赖性其中一方来提高另一方,因为HTTP最初的目的不是为了双向通讯。

WebSocket实现原理

1、tcp协议的三次握手四次挥手的机制和过程依然存在

2、websocket协议本身有握手环节

3、websocket协议成功之后收发数据

WebSocket的实现过程如下:

  1. 客户端发起WebSocket连接请求。
  2. 服务器响应WebSocket连接请求,并完成握手过程。
  3. 客户端和服务器之间建立WebSocket连接。
  4. 客户端和服务器通过WebSocket连接进行双向通信。
  5. 当客户端或服务器想要关闭WebSocket连接时,可以通过发送Close帧来关闭连接。

WebSocket的实现细节如下:

  1. 客户端通过使用socket.io库或原生WebSocket API来发起WebSocket连接请求。
  2. 服务器需要配置WebSocket服务器的地址和端口号,并监听WebSocket连接请求。
  3. 在握手过程中,客户端和服务器交换一些数据,以确定WebSocket连接的参数。这些数据包括Key、Version、SubProtocol等。
  4. 一旦建立了WebSocket连接,客户端和服务器就可以通过WebSocket连接进行双向通信。通信的数据格式为JSON或二进制格式。
  5. 当需要关闭WebSocket连接时,客户端或服务器可以发送Close帧来关闭连接。Close帧中包含一个状态码和一个关闭原因,以告诉对方连接已经关闭。

总之,WebSocket的实现原理是通过建立一个持久的TCP连接,实现客户端和服务器之间的双向通信。其实现过程涉及到握手过程、数据传输和关闭连接等步骤。

websocket关键组件

WebSocket协议的关键组件包括以下几个:

  1. WebSocket客户端:WebSocket客户端存在于浏览器或其他可以运行WebSocket应用程序的环境中。它负责发起WebSocket连接请求,并通过WebSocket连接与服务器进行通信。
  2. WebSocket服务器:WebSocket服务器是运行WebSocket服务端的程序,它负责响应WebSocket连接请求,并与客户端建立WebSocket连接。WebSocket服务器可以基于各种不同的平台和技术实现,如Node.js、Java、C#等。
  3. WebSocket连接:WebSocket连接是WebSocket客户端和服务器之间建立的持久连接,它允许双方进行双向通信。一旦连接建立,客户端和服务器就可以通过该连接发送和接收消息。
  4. WebSocket帧:WebSocket帧是WebSocket连接中传输的基本单位。它包含了控制信息(如帧类型、帧长度等)和有效载荷数据(实际传输的数据)。WebSocket帧有两种类型:文本帧和二进制帧。
  5. WebSocket协议:WebSocket协议是一种应用层协议,它基于HTTP协议,但不需要进行多次握手和响应。WebSocket协议通过TCP连接进行通信,实现了客户端和服务器之间的双向通信。

这些关键组件共同构成了WebSocket协议的基础结构,使得WebSocket成为实时通信的有力工具。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/95412.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode - 360周赛

一,2833. 距离原点最远的点 这道题的意思是,遇到 "L" 向左走,遇到 "R" 向右走,遇到 "_" 左右都可以走,那么要想找到距离原点最远的点,就是在找 | "L" "R&qu…

Java代码审计15之Apache log4j2漏洞

文章目录 1、log4j简介2、复现2.1、高版本测试2.2、测试代码2.3、补充之dns探测2.3.1、rmi、ldap也可以dnslog探测 2.3.2、dnslog外带信息 3、漏洞原理3.1、漏洞的危害大的背景3.2、具体的代码调试 4、靶场测试4.1、dns探测4.2、工具下载与使用4.3、测试4.4、手工可以测出&…

LeetCode--HOT100题(44)

目录 题目描述:230. 二叉搜索树中第K小的元素(中等)题目接口解题思路代码 PS: 题目描述:230. 二叉搜索树中第K小的元素(中等) 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你…

git的常用命令

初始化git,以及如何提交代码 1、配置用户信息 git config --global user.name zhangsan # 设置用户签名 git config --global user.email zhangsanqq.com # 设置用户邮箱(不会验证,可以不存在)1.1、查看是否已经添加用户配置 在…

软件测试Day6|接口测试

学习流程 接口测试流程 需求分析和评审–接口文档分析–编写测试用例–测试用例设计及评审–测试脚本构建–执行测试用例–缺陷管理和回归–测试报告和总结计网基础(URL、请求、响应) 接口文档解析 拿到一个项目接口之后,先测试业务接口还是…

英码深元“三位一体”AI场景化解决方案,助力多地化工园区快速实现智慧化转型!

我国是世界公认的化工大国,同时也是崛起中的化工强国。近年来多起重大爆炸事故暴露出我国化工园区安全问题突出,特别是在安全风险管控数字化转型、智能化升级方面存在明显短板和不足,尤其突出的痛点:化工园区的日常管理方式较为粗…

快速上手GIT命令,现学也能登堂入室

系列文章目录 手把手教你安装Git,萌新迈向专业的必备一步 GIT命令只会抄却不理解?看完原理才能事半功倍! 快速上手GIT命令,现学也能登堂入室 系列文章目录一、GIT HELP1. 命令文档2. 简要说明 二、配置1. 配置列表2. 增删改查3. …

机器学习——手写数字识别

0、:前言 这篇文章能够帮助你从数据到模型的整个过程实现不过至于安装第三方库等基础问题,本文不涉及,因为确实不难,搜一搜一大把本此实验运行环境为jupyter,当然通过pycharm也是可行的 1、数据: 手写数字…

自动化运维工具Ansible之playbooks剧本

自动化运维工具Ansible之playbooks剧本 一、playbooks1.playbooks简述2.playbooks剧本格式3.playbooks组成部分 二、实例1.编写脚本2.运行playbook3.定义、引用变量4.指定远程主机sudo切换用户5.when条件判断6.迭代7.Templates 模块8.tags 模块9.Roles 模块 三、编写应用模块1.…

Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合

多个类继承同一个接口,如何注入?与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案:(约定大于配…

AtCoder Beginner Contest 318

目录 A - Full Moon B - Overlapping sheets C - Blue Spring D - General Weighted Max Matching E - Sandwiches F - Octopus A - Full Moon #include<bits/stdc.h> using namespace std; const int N1e65; typedef long long ll ; const int maxv4e65; typedef …

微软 Turing Bletchley v3视觉语言模型更新:必应搜索图片更精准

据微软新闻稿透露&#xff0c;在推出第三代Turing Bletchley视觉语言模型后&#xff0c;微软计划逐步将其整合到Bing等相关产品中&#xff0c;以提供更出色的图像搜索体验。这款模型最初于2021年11月面世&#xff0c;并在2022年秋季开始邀请用户测试。 凭借用户的反馈和建议&am…