关于分布式websocket踩的坑及解决方案

2023-11-04

关于websocket知识点

首先了解下websocket与http协议

1、WebSocket是HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

它是为了解决客户端发起多个http请求到服务器资源浏览器必须要经过长时间的轮训问题而生的,他实现了多路复用、全双工通信。在webSocket协议下客服端和浏览器可以同时发送信息。

2、HTTP的协议是应用层的协议,他是基于TCP协议的,HTTP协议建立连接必须有三次握手才能发送消息(这里就不在赘述具体是怎么实现的)。即每一个request对应一个response。客户端与服务器端通信,必须由客户端发起服务器端返回结果。客户端是主动的,服务器端是被动的。

HTTP的长链接和WebSocket持久连接的区别:

HTTP1.1 的连接默认使用长连接(persistent connection),即在一定的期限内保持链接,客户端会需要在短时间内向服务端请求大量的资源,保持TCP连接不断开。客户端与服务器通信,必须要有客户端发起然后服务器返回结果。客户端是主动的,服务器是被动的。在一个TCP连接上可以传输多个Request/Response消息对,所以本质上还是Request/Response消息对,仍然会造成资源的浪费、实时性不强等问题。

1、如果不是持续连接,即短连接,那么每个资源都要建立一个新的连接,HTTP底层使用的是TCP,那么每次都要使用三次握手建立TCP连接,即每一个requ

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

关于分布式websocket踩的坑及解决方案 的相关文章

  • 从 Android 函数更新 Textview

    有人可以告诉我如何从函数更新 Android Textview 控件吗 我在互联网上进行了深入搜索 看到很多人都问同样的问题 我测试了线程但无法工作 有人有一个简单的工作示例吗 例如 调用一个函数 在循环中运行多次 并且该函数在 TextV
  • 在java代码中创建postgresql表

    我有一个与 postgreSQL 数据库连接的 java 代码 现在 我希望当它连接到数据库时 我还将创建数据库表 但我的问题是 它不会创建数据库 我不知道问题是什么 这是我的代码 Statement st null ResultSet r
  • 如何重复一段文本中的每个字母?爪哇语

    就像在口吃中一样 如果文本为 dean 并且乘数为 3 则结果将是 dddeeeaaannn 由提供的乘数指定的次数 public static void repeatLetters String text dean int n 3 Str
  • Java:为什么.class文件中的方法类型包含返回类型,而不仅仅是签名?

    class 文件的常量池中有一个 NameAndType 结构 它用于动态绑定 该类可以 导出 的所有方法都被描述为 签名 返回类型 喜欢 getVector Ljava util Vector 当某些 jar 中方法的返回类型发生更改时
  • ZeroDateTimeBehavior=convertToNull 在使用 hibernate 的 jdbc url 中不起作用

    通过 extern 属性文件 url 指定如下 jdbc mariadb xxxxx 3306 xxxxx zeroDateTimeBehavior convertToNull 连接工作正常并且能够查询数据库 通过休眠 我创建了一个映射到带
  • 使用 Spring MVC 在 jar 文件中显示 jsp 页面

    我正在使用 Spring MVC 3 2 2 在 java 中开发一个 Web 应用程序 我在从 jar 文件中加载 jsp 页面时遇到问题 Spring MVC Web应用程序具有以下结构 META INF WEB INF spring
  • 清空变量不会使方法引用无效[重复]

    这个问题在这里已经有答案了 为什么代码不抛出NullPointerException当我使用与变量绑定的方法引用时dog我后来分配了null to 我正在使用 Java 8 import java util function Functio
  • 当前平台不支持桌面 API

    我遇到过这个错误 java lang UnsupportedOperationException 当前平台不支持桌面 API 我将从我的 java 应用程序中打开一个文件 我用这个方法 Desktop getDesktop open new
  • 使用 https 的 Web 服务身份验证给出错误

    我编写了一个简单的 Web 服务 并使用摘要和 HTTPS 身份验证来保护它 我已经使用 Java 中的 keytool 生成了我的证书 当我通过创建 war 文件在 Tomcat 中部署 Web 服务时 axis 的欢迎页面正确显示 但是
  • 是否可以使用 Apache Tika 提取表信息?

    我正在寻找 pdf 和 MS Office 文档格式的解析器 以从文件中提取表格信息 当我看到 Apache Tika 时 正在考虑编写单独的实现 我能够从任何这些文件格式中提取全文 但我的要求是提取表格数据 我希望有 2 列采用键值格式
  • 如何使用 aether 从 Java 找到最新版本的 Maven 工件?

    他们的文档非常薄弱 我无法弄清楚 我找到了部分答案here https stackoverflow com questions 27428068 how to retrieve the latest also snapshot versio
  • java绕中心旋转矩形

    我想围绕其中心点旋转一个矩形 它应该保留在应该绘制的位置并在该空间中旋转 这是我的代码 AffineTransform transform new AffineTransform transform rotate Math toRadian
  • Spring Security 角色层次结构不适用于 Thymeleaf sec:authorize

    我正在使用 Spring Security 3 2 5 RELEASE 和 ThymeLeaf 2 1 4 RELEASE 我已经在安全上下文中定义了角色层次结构 在我的视图层中我正在使用sec authorize属性来定义菜单项 我希望看
  • Java 8:如何创建毫秒、微秒或纳秒的 DateTimeFormatter?

    我需要创建格式化程序来解析具有可选的毫秒 微米或纳秒分数的时间戳 例如 对于我的需求 我看到以下机会 DateTimeFormatter formatter new DateTimeFormatterBuilder append DateT
  • 向Java类库添加函数

    我使用的 Java 类库在很多方面都不完整 有很多类我认为应该内置其他成员函数 但是 我不确定添加这些成员函数的最佳实践 让我们调用不足的基类A class A public A long arbitrary arguments publi
  • 如果 Modelmapper 中的整个属性为空,如何排除它们

    ModelMapper 是否 http modelmapper org http modelmapper org 支持什么排除属性 如果该值为空 我刚刚找到了 PropertyMap 但这对我来说是一种限制 因为我必须描述我想要的特定属性
  • 如何更改 JAX-WS Web 服务的地址位置

    我们目前已经公开了具有以下 URL 的 JAX RPC Web 服务 http xx xx xx xx myservice MYGatewaySoapHttpPort wsdl http xx xx xx xx myservice MYGa
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • Axis2 的 wsdl2java 在 RPC/Encoded 样式 Web 服务上失败

    Axis2 有替代方案吗 或者让它工作的方式 例如不同的数据绑定 Retrieving document at Exception in thread main org apache axis2 wsdl codegen CodeGener
  • JPA ManyToMany 产生的空联接表

    我有一个应用程序 其中我尝试使用 Hibernate 作为 JPA 提供程序来实现两个实体之间的多对多关系 我正在尝试的例子是一个单向的 其中一个相机可以有多个镜头 而镜头可以安装到多个相机中 以下是我的实体类 只需粘贴其中的相关部分 Ca

随机推荐

  • Linux下C++开发笔记--使用launch.json文件调试可执行文件

    1 前言 生成的可执行文件必须为 debug 版本 博主倾向于使用 Cmake 生成可执行文件 因此CMakeLists txt 必须设置以下参数 set CMAKE BUILD TYPE Debug 2 launch json文件编写 v
  • 一分钟教你快速部署Kubernetes应用

    Kubernetes是最近DevOps世界里最让人激动的技术了 在过去的几年里它吸引了很多人 它瞬间成名的原因是强大的容器技术 Docker公司推出了伟大的容器产品 让容器成为了技术领域独一无二的焦点 Docker成功推动了容器的广泛使用
  • 【Python+Stata】豪斯曼检验:固定效应or随机效应?

    文章目录 一 Python实现 一 获取面板数据 二 固定效应模型 三 随机效应模型 四 豪斯曼检验 二 Stata实现 一 获取面板数据 二 固定效应模型 三 随机效应模型 四 豪斯曼检验 此文章首发于公众号 Python for Fin
  • 本地 IDC 中的 K8s 集群如何以 Serverless 方式使用云上计算资源

    在前一篇文章 应对突发流量 如何快速为自建 K8s 添加云上弹性能力 中 我们介绍了如何为 IDC 中 K8s 集群添加云上节点 应对业务流量的增长 通过多级弹性调度 灵活使用云上资源 并通过自动弹性伸缩 提高使用率 降低云上成本 这种直接
  • nginx启动成功进程正常,浏览器访问不了,欢迎页面不出现

    自己搭建了nginx tomcat 部署到服务器上面 装好nginx 为了避免冲突 把其他进程都检查了一遍 没有占用80端口 所以默认使用80端口 安装好后 启动nginx ps ef grep nginx 进程正常 使用浏览器访问时发现访
  • 数据库的存储引擎-MySQL

    什么是存储引擎 MySQL中存在多种存储引擎的概念 简而言之 存储引擎就是指表的类型 在具体开发时 为了提高MySQL数据库管理系统的使用效率和灵活性 可以根据实际需要来选择存储引擎 因为存储引擎指定了表的类型 即如何存储和索引数据 是否支
  • 【解决】Ubuntu20.04启动后无法进入图形界面

    问题 今天启动主机 Ubuntu 20 04操作系统 发现怎么都进入不了图形化界面 始终停留在黑色的命令行界面 且没看到任何报错信息 不过虚拟终端 通过Alt 2 或者 Ctrl Alt F2切换 还是可以成功进入 说明系统并没有坏 差点又
  • 你删除过的所有小黄片,它都能轻易找到

    大家好 我是厂长 前两天给大家分享了 月入百万 背后割韭菜的套路 没看过的同学可以再看一下 免得被割韭菜了 去他丫的月入100万 想必在座各位在自己的电脑或移动设备中删除过各种各样的文件 其中肯定有着各种私人照片 视频 文档 音频 邮件等等
  • Java元注解

    目录 什么是注解 注解的重要性 Target Retention Documented 很少 Inherited 极少 什么是注解 注解其实就是代码里的特殊标记 这些标记可以在编译 类加载 运行时被读取 并执行相应的处理 通过使用注解 程序
  • 虚拟员工—RPA机器人助力创业者迈向成功

    RPA 人工智能等技术的蓬勃发展 催生了新的服务方式和流程运营方法 如何应用数字化技术转型升级 降本增效 提升核心竞争力 已成为国内企业的重要命题 眼下RPA行业火热 需求旺盛 但商业落地仍有待进一步加速 为此 来也科技举办了 UiBot百
  • 如何解决WIN11的EDGE浏览器页面的“嗯...无法访问此页面”,怎么办?记录一下

    解决网络连接不上的问题 方法概括 1 第一步 2 第二步 3 第三步 总步骤 方法概括 控制面板 网络和internet internet选项 连接 局域网设置 在 为LAN使用代理服务器 这一栏打上勾 最后点击确定退出即可 1 第一步 2
  • SourceTree解决冲突的三种情形

    SourceTree解决冲突的三种情形 解决冲突的时候 操作已暂存文件 不操作未暂存文件 开始的时候 这两个区域的文件是一样的 并且都带有感叹号提示 使用他人版本解决冲突 会自动将当前分支对应文档更改成他人文档内容 此时该文档从未暂存文件中
  • anaconda在虚拟环境中安装jupyter notebook

    目录 在虚拟环境中安装jupyter notebook 解决jupyter notebook中不存在虚拟环境的问题 修改jupyter notebook的启动路径 在虚拟环境中安装jupyter notebook 在安装anaconda的时
  • 黑马程序员node.js学习笔记

    1 初识 Node js 1 1 Node js 简介 Node js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境 Node js 的官网地址 https nodejs org zh cn 1 2 Node js
  • C语言中unsigned long long数据类型

    unsigned long long类型是目前C语言中精度最高的数据类型 可以用来表示20以内的阶乘数据 20以外的自测 还有是unsigned long long的精度64位 double或者long double 虽然也占有8个字节 但
  • java中子类可以继承父类的私有属性

    1 父类的私有属性可以被子类继承 父类的私有属性i1和i2 子类的对象中父类的私有属性i1和i2 2 子类虽然可以继承父类的私有属性 但是不能直接访问私有属性 除非父类开放了私有属性的访问接口
  • linux安装php-fpm,安装php(php-fpm)

    这里安装php7 2版本 首先到php官网下载安装包 下载到 usr local src 目录下 wget http jp2 php net get php 7 2 13 tar gz from this mirror 解压下载好的文件包
  • 地区查询python

    def file to dict area file 接收一个表示文件名的字符串为参数 将文件中的数据保存到字典中 返回字典 area in dict with open area file r encoding utf 8 as data
  • Failed to execute ‘createObjectURL‘ on ‘URL‘: Overload resolution failed.

    vue使用二进制流下载文件 使用 link href window URL createObjectURL blob 报错 Failed to execute createObjectURL on URL Overload resoluti
  • 关于分布式websocket踩的坑及解决方案

    关于websocket知识点 首先了解下websocket与http协议 1 WebSocket是HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议 使得客户端和服务器之间的数据交换变得更加简单 允许服务端主动向客户端推送