websocket没准备好如何解决_websocket没准备好点确定继续怎么解决,这事android? 爱问知识人...

2023-11-12

【请采纳点赞】

你可以把WebSocket看成是HTTP协议为了支持长连接所打的一个大补丁,它和HTTP有一些共性,是为了解决HTTP本身无法解决的某些问题而做出的一个改良设计。在以前HTTP协议中所谓的keep-aliveconnection是指在一次TCP连接中完成多个HTTP请求,但是对每个请求仍然要单独发header;所谓的polling是指从客户端(一般就是浏览器)不断主动的向服务器发HTTP请求查询是否有新数据。

这两种模式有一个共同的缺点,就是除了真正的数据部分外,服务器和客户端还要大量交换HTTPheader,信息交换效率很低。它们建立的“长连接”都是伪。长连接,只不过好处是不需要对现有的HTTPserver和浏览器架构做修改就能实现。WebSocket解决的第一个问题是,通过第一个HTTPrequest建立了TCP连接之后,之后的交换数据都不需要再发HTTPrequest了,使得这个长连接变成了一个真。

长连接。但是不需要发送HTTPheader就能交换数据显然和原有的HTTP协议是有区别的,所以它需要对服务器和客户端都进行升级才能实现。在此基础上WebSocket还是一个双通道的连接,在同一个TCP连接上既可以发也可以收信息。此外还有multiplexing功能,几个不同的URI可以复用同一个WebSocket连接。

这些都是原来的HTTP不能做到的。另外说一点技术细节,因为看到有人提问WebSocket可能进入某种半死不活的状态。这实际上也是原有网络世界的一些缺陷性设计。上面所说的WebSocket真。长连接虽然解决了服务器和客户端两边的问题,但坑爹的是网络应用除了服务器和客户端之外,另一个巨大的存在是中间的网络链路。

一个HTTP/WebSocket连接往往要经过无数的路由,防火墙。你以为你的数据是在一个“连接”中发送的,实际上它要跨越千山万水,经过无数次转发,过滤,才能最终抵达终点。在这过程中,中间节点的处理方法很可能会让你意想不到。比如说,这些坑爹的中间节点可能会认为一份连接在一段时间内没有数据发送就等于失效,它们会自作主张的切断这些连接。

在这种情况下,不论服务器还是客户端都不会收到任何提示,它们只会一厢情愿的以为彼此间的红线还在,徒劳地一边又一边地发送抵达不了彼岸的信息。而计算机网络协议栈的实现中又会有一层套一层的缓存,除非填满这些缓存,你的程序根本不会发现任何错误。这样,本来一个美好的WebSocket长连接,就可能在毫不知情的情况下进入了半死不活状态。

而解决方案,WebSocket的设计者们也早已想过。就是让服务器和客户端能够发送Ping/PongFrame(RFC6455-TheWebSocketProtocol)。这种Frame是一种特殊的数据包,它只包含一些元数据而不需要真正的DataPayload,可以在不影响Application的情况下维持住中间网络的连接状态。

全部

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

websocket没准备好如何解决_websocket没准备好点确定继续怎么解决,这事android? 爱问知识人... 的相关文章

  • 机器学习实验1---决策树预测泰坦尼克数据集

    泰坦尼克号乘客数据集分析 ID3算法决策树 泰坦尼克问题是一个比较经典的案例 此次实验的目的在于用决策树进行乘客的生存预测 数据集中的具体字段为 数据 含义 PassengerId 乘客编号 Survived 是否幸存 Pclass 船票等
  • 为什么要做一款ERP软件——开源软件诞生7

    技术之外的探讨 第7篇 用日志记录 开源软件 的诞生 赤龙ERP开源地址 点亮星标 感谢支持 与开发者交流 kzca2000 码云 https gitee com redragon redragon erp GitHub https git
  • 微搭低代码学习之销售员销售目标采集系统开发

    四月二十三 春意渐浓 草木抽出新枝 鸟儿唱响欢融 花开满园 香气袭人 阳光明媚 人们心情舒畅 愿这美好的日子 伴随你一生 使用Notion AI提问 写一首关于4月23日的诗 文章目录 前言 一 销售员销售目标采集系统需求分析 一 需求背景
  • Matplotlib绘制混淆矩阵及colorbar标签设置

    本文提供一种通过Matplotlib绘制混淆矩阵并调整colorbar标签的程序 直接上程序 from sklearn metrics import confusion matrix import matplotlib pyplot as
  • JS从编译到运行代码的过程

    js运行分为两个阶段 具体AST树以及bytecode等名词看我上一篇文章 浏览器工作原理 1 编译阶段 js代码 gt AST树 代码被解析的过程 v8引擎内部会在堆内存帮助我们创建一个对象 GlobalObject gt GO 简称GO
  • JS闭包理解

    JS闭包 1 闭包 每次看到jQuery的时候 首先想到的就是闭包 这是个常谈的问题了 今天重新回忆了一下闭包 什么是闭包 当有一个函数想要访问另一个函数内部的变量 这个是访问不了的 所有我们要用闭包来访问 所以简单的来说 闭包就是连接函数
  • STM32使用IIC协议驱动0.96寸OLED屏

    IIC是常用的协议之一 它通过不同的地址来区分设备 并且端口需要是开漏模式 并且需要接上拉电阻 要使用IIC驱动OLED 首先要配置IIC void I2C Configuration void I2C InitTypeDef I2C In
  • 程序员工资大概组成【刚毕业的大学生看过来】

    一 程序员的薪资组成是什么样子的呢 薪资组成因人而异 受到很多因素的影响 如工作地点 工作经验 工作职责 专业领域等 一般而言 中国程序员的薪资组成包括基本工资 绩效工资 津贴和奖金等 在中国 程序员的平均薪资水平受到地区 行业和职业经验等
  • C++实现一个线程池

    一 为什么使用线程池 大家都知道C 支持多线程开发 也就是支持多个任务并行运行 我们也知道线程的生命周期中包括创建 就绪 运行 阻塞 销毁等阶段 所以如果要执行的任务很多 每个任务都需要一个线程的话 那么频繁的创建 销毁线程会比较耗性能 有
  • 【计算机视觉

    文章目录 一 检测相关 9篇 1 1 Boosting Detection in Crowd Analysis via Underutilized Output Features 1 2 CircleFormer Circular Nucl
  • 油猴安装错误问题(下载中断问题)及脚本安装

    第一步 在电脑c盘找到这个文件 C Windows System32 drivers etc 然后用记事本打开hots 打开之后如此图 2 在host文件最后面 添加 131 253 33 219 edge microsoft com 13
  • 利用python绘制二三维曲面和矢量流线图

    为了实现不同数据的可视化 最近研究了python环境下的可视化方案 为后续的流体运动仿真模拟做好储备 由于python处理数据的便利性 导致目前很多后端处理或者可视化成图操作都在python中实现 比如前端是vue 加上简单的交互操作 后端
  • nextjs的getStaticProps要点

  • 24时区来源,CST,CET,UTC,DST,Unix时间戳概述、关系、转换

    全球24个时区的划分 相较于两地时间表 显示世界各时区时间和地名的世界时区表 Universal WorldTime 就显得精密与复杂多 通常世界时区表的表盘上会标示着全球24个时区的城市名称 全球24个时区是如何产生的 过去世界各地原本各
  • 【学习笔记】【DBN】十九——深度信念网络DBN

    本篇简要介绍深度信念网络DBN 是一个不太常见的神经网络 首先对深度信念网络 DBN 进行简要介绍 然后对其组成原件RBM的结构 原理和训练过程进行介绍 接着对DBN的训练过程进行介绍 目录 一 DBN概述 二 首先玻尔兹曼机 RBM 1
  • 图形推理1000题及答案解析_公考干货

    图形推理中 立体折叠类图形最大的难点就是考察人的立体空间推理 主要考察方式有折纸盒 三视图 剖面图 解题方法有特殊面法 相邻面法 相对面法 无论题目有多难都不会逃出这三个方法 但是很多考生的立体推理能力比较差 教给大家一个小技巧 在考试过程
  • LeetCode 20. 有效的括号

    题目链接 https leetcode cn problems valid parentheses C 代码如下 class Solution public bool isValid string s stack
  • The Standard C Library

    C的标志库函数是学习和使用C语言的基础 是编写经典C程序的基础 是学习其他计算机知识的基础 C标志库中一共包含了15个头文件
  • matlab求lypunov,【原创】Lyapunov、Sylvester和Riccati方程的Matlab求解

    Lyapunov Sylvester和Riccati方程是控系统常用到的几个方程 应用和计算比较广泛 在这里我们只要讨论下Lypunov方程的连续方程 离散方程的数值和解析解法 其中数值解法MATLAB提供的直接的lyap 和dlyap 函

随机推荐

  • ClassNotFoundException:NullPointerException:ArrayIndexOutOfBounException:FileNotFoundException:等异常

    目录 1 ClassNotFoundException 解决方法 2 NullPointerException 解决方法 3 ArrayIndexOutOfBoundsException 解决方法 4 FileNotFoundExcepti
  • EasySwoole ElasticSearch打造高性能小视频服务系统

    好久没有更新教程 现在更新一套缓存视频给大家 Elasticsearch的索引思路 将磁盘里的东西尽量搬进内存 减少磁盘随机读取次数 同时也利用磁盘顺序读特性 结合各种奇技淫巧的压缩算法 用及其苛刻的态度使用内存 所以 对于使用Elasti
  • 操作系统-管道通信

    编写程序 演示多进程并发执行和进程软中断 管道通信 父进程使用系统调用pipe 建立一个管道 然后使用系统调用fork 创建两个子进程 子进程1和子进程2 子进程1每隔1秒通过管道向子进程2发送数据 I send you x times x
  • C++ STL 集合set

    本文主要简述集合的原理和用法 便于快速学习和查阅 集合的原理 set是一个内部自动有序且不含重复元素的容器 set集合容器实现了红黑树 Red Black Tree 的平衡二叉检索树的数据结构 在插入元素时 它会自动调整二叉树的排列 把该元
  • Spring AOP:面向切面编程的简介和实践

    目录 一 什么是AOP 二 AOP的核心概念 三 Spring AOP的实现方式 第一种 注解配置AOP 第二种 xml配置AOP 一 什么是AOP AOP Aspect Oriented Programming 即面向切面编程 是一种编程
  • 在.NET中使用正则表达式(入门篇)

    转载请注明 敏捷学院 技术资源库 原文链接 http dev mjxy cn a In NET using regular expressions aspx 代码下载 RegexExample zip介绍正则表达式提供了功能强大 灵活而又高
  • ITest:京东数科接口自动化测试实践

    导读 你是否为每天 点点点 的工作而感到索然无味 你是否苦于没有合适的工具而对复杂的测试任务望而却步 频繁变动的接口 重复的功能测试 你 疲惫么 京东数科平台开发团队基于日常接口测试经验 开发了接口测试平台 ITest 通过此平台让研发流程
  • [OpenAirInterface实战-20] :OAI 软件无线电USRP E310硬件详解

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 121094384 第1章 概述 USR
  • ChatGPT 或其它 AI,能用在文书创作上吗?

    新的申请季已经正式开始 一些热门项目的ED截止日期也不再遥远 因此很多准留学生们都已经开始了关于文书的创作 而随着科技的不断发展 以ChatGPT为首的一众AI工具也作为一种辅助手段愈发融入了我们的生活 那么不免就会有一些同学在准备申请时
  • excel基本操作1

    excel隔行设置样式 条件格式 gt 条件规则 gt 输入公式 参考https jingyan baidu com article 36d6ed1f2379c35acf4883e0 html excel隔列取值 使用Index结合row和
  • 无线专题 osi模型、TCP/IP五层模型、网络编程(一)

    一 OSI介绍 1 OSI的来源 OSI Open System Interconnect 即开放式系统互联 一般都叫OSI参考模型 是ISO 国际标准化组织 组织在1985年研究的网络互连模型 ISO为了更好的使网络应用更为普及 推出了O
  • Kafka消费者详解

    一 Kafka消费者的消费模式 当生产者将消息发送到Kafka集群后 会转发给消费者进行消费 消息的消费模型有两种 推送模式 push 和拉取模式 pull 1 消息的推送模式 消息的推送模式需要记录消费者的消费状态 当把一条消息推送给消费
  • u盘刷新系统

    1 百度u盘制作将u盘进行刷成系统盘 点击添加系统 确认 关掉即可 到这里就制作完成了 u盘里也有系统了 下一步就是进入电脑的 bios 一般是f8 或者f2 或者esc 看你是什么电脑自己手机百度一下 当进入u盘系统时候会发现一键刷机工具
  • 【计算机网络】HTTP协议详解(八):HTTP网关

    HTTP网关 文章目录 HTTP网关 一 网关 Gateway 二 网关的分类 1 HTTP 服务器端网关 2 HTTP 客户端网关 3 HTTP HTTPS 服务器端安全网关 4 HTTPS HTTP 客户端安全加速器网关 5 资源网关
  • sshpass

    sshpass 安装 sshpass Linux 软件工具安装 源码安装 测试 sshpass 在使用 ssh scp 等命令进行远程操作的时候 必须手动输入密码 这就为自动化的执行造成困扰 sshpass 可以在命令行直接使用密码来进行远
  • Android Studio 常用快捷按键

    大小写转换 Cmd Shift U Ctrl Shift U 注释代码 Cmd Ctrl 注释代码 Cmd Option Ctrl Alt 格式化代码 Cmd Option L Ctrl Alt L 清除无效包引用 Option Contr
  • Python实现Mean Shift算法

    声明 代码的运行环境为Python3 Python3与Python2在一些细节上会有所不同 希望广大读者注意 本博客以代码为主 代码中会有详细的注释 相关文章将会发布在我的个人博客专栏 Python从入门到深度学习 欢迎大家关注 在K Me
  • 【PTA】 7-1 矩阵链相乘问题 (20 分)

    输入 5 30 35 15 5 10 20 输出 11875 代码 include
  • Python Numpy数组保存

    Numpy提供了几种数据保存的方法 以3 4数组a为例 1 a tofile filename bin 这种方法只能保存为二进制文件 且不能保存当前数据的行列信息 文件后缀不一定非要是bin 也可以为txt 但不影响保存格式 都是二进制 这
  • websocket没准备好如何解决_websocket没准备好点确定继续怎么解决,这事android? 爱问知识人...

    请采纳点赞 你可以把WebSocket看成是HTTP协议为了支持长连接所打的一个大补丁 它和HTTP有一些共性 是为了解决HTTP本身无法解决的某些问题而做出的一个改良设计 在以前HTTP协议中所谓的keep aliveconnection