如何从 html5 websocket 计算出有效负载大小

2023-12-04

如何通过 websocket 得知 html5 消息有效负载长度?

我知道基本协议由操作码组成,然后长度由接下来的 1 到 8 个字节确定,然后以下值是散列,然后其余的是有效负载!

我正在创建一个java服务器端应用程序,它将从html5客户端接收消息然后进行处理,我可以处理最多256字节的消息。

任何手动解决这个问题的帮助都会很棒(即如何处理确定有效负载的字节)

Cheers


Websocket 帧的有效负载长度可以通过三种方式进行编码,这取决于有效负载的长度:

  1. 125 或以下
  2. 126-65535
  3. 65536 +

使用哪种方式可以通过查看第二个字节的最后 7 位的值来判断(第二个字节的第一位是掩码标志)。

当它低于126时,它是有效负载长度。 当它是126时,负载长度在下面的两个字节中。 当它是127时,有效负载长度在接下来的8个字节中。

因此,解释 websocket 帧时必须遵循的算法是:

  1. 读取第一个字节(“byte0") 获取 fin 标志和操作码
  2. 读取第二个字节(“byte1")
  3. when byte1大于 127,减去 127byte1并设置masked to true
  4. when byte1现在是 126,读取接下来的两个字节并将其转换为short。这是payload_length.
  5. when byte1是127,读取接下来的八个字节并将其转换为long。这是payload_length.
  6. when byte1是别的东西,payload_length等于byte1
  7. when masked为真,读取下一个 4 字节。这是masking_key.
  8. 读取您拥有的字节数payload_length获取有效负载。
  9. when masked是真的,应用masking_key到有效负载。

Websocket 框架中没有哈希码,您一定混淆了某些内容。 Websocket 帧的完整性由其下方的 TCP 层确保。

有关Websocket协议的更多信息,请参阅RFC 6455.

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

如何从 html5 websocket 计算出有效负载大小 的相关文章

随机推荐

  • SSL 主机名匹配如何在 JWS 上工作?

    当使用 Android 版 Google SafetyNet 时 文档建议您 验证 SSL 证书链并使用 SSL 主机名匹配 确保叶子认证是问题attest android com 现在这是如何运作的 我假设我收到 JWS 消息检查证书和签
  • 无法从 docker 访问 jupyter 笔记本

    我正在尝试运行在 Docker 中创建的 jupyter 笔记本 首先我运行一个容器 docker run p 8888 8888 jupyter tensorflow notebook 我得到的是 I 19 44 47 140 Noteb
  • 如果我关闭 wifi,则无法让 ionic 应用程序工作(在开发过程中)

    因此 在开发时 我关闭了 wifi 然后 ionic 应用程序无法在 Android 设备 模拟器中工作 但是当我关闭 wifi 时 Android 应用程序的已发布和签名的 apk 文件工作得很好 问题是我需要我的应用程序在互联网连接关闭
  • 本地数据缓存同步不会将客户端更改保存到 sdf 文件

    我创建了一个新的 c 项目 并按照本教程中的步骤创建了 LocalDate 缓存 我接下来添加了以下代码 using System using System Collections Generic using System Componen
  • d3:仅线性插值足够接近的点

    假设我有一个具有相应日期的值数组 date d1 value v1 date dn value vn 我想使用 d3 js 进行可视化 只要后续测量在一定的时间范围内 例如相隔不超过一周 我就很高兴在测量之间插入 d3 但是 当后续记录相距
  • 奇怪的 strtok 行为

    char line 255 char token NULL char line2 NULL char temporaryToken NULL if scanf n line gt 0 token strtok line divide the
  • 在默认日历中添加特定日期作为事件

    我是 iPhone 开发新手 我的应用程序中有一个要求 其中有一个网络服务链接 如下所示 http 01s in webservices sikhcalendar getData php db table cal 所以我想要链接中显示的特定
  • 如何将类构造函数的“this”绑定到外部对象

    我正在寻找一种使用类似的方法Function apply对于类 以便this执行的构造函数的属性是外部对象 通过一个功能我可以简单地使用apply function Bar this value value const proxy Bar
  • 如何垂直连接多个结构结果?

    如果我有结构数组并使用矩阵索引访问它 我会得到多个 anses gt gt a struct a 0x0 struct array with no fields gt gt a 1 f1 1 2 a f1 2x1 double gt gt
  • 自动化 Excel 时如何将文本框对象放置在特定单元格上?

    我们正在使用 VB Net 自动化 Excel 并尝试在 Excel 工作表上放置多行文本 并将其设置为不打印 在这些之间我们会有可打印的报告 如果我们添加文本框对象并将打印对象设置设置为 false 则可以做到这一点 如果您有其他方法 请
  • xsd中key的正确使用方法

    我正在为我正在从事的项目编写 XSD 架构 下面的架构是我从微软示例中获取的 并稍加修改 我试图使用 key 和 keyref 为一组项目声明一个唯一的键 然后在另一部分中引用该键 我很长一段时间都无法让它工作 我将编写架构并设置一个测试文
  • 如何在 iOS 5 中向 UIPageViewController 添加页面数组?

    有谁知道我缺少什么才能将我自己的视图控制器手动添加到 UIPageViewController 方法中 我目前有这个 我不知道如何继续 NSDictionary pageViewOptions NSDictionary dictionary
  • 枚举桌面上的所有窗口句柄

    有没有 Win32 API 方法来获取所有打开的窗口的枚举 似乎一定不知道从哪里开始寻找 枚举Windows 是为了那个 您调用它并提供回调 它为每个找到的窗口调用回调并将句柄传递给该窗口 然后 您可以使用该句柄查询窗口参数并决定您是否对此
  • 卡住:在 Mac 上的“钥匙串访问”中向证书颁发机构请求证书

    我在 Mac 上的 钥匙串访问 中向证书颁发机构请求证书是堆叠的 如下图所示 生成证书所需的时间太长 我填写了证书颁发机构的电子邮件 姓名和电子邮件地址 我可能填写有误 证书颁发机构的电子邮件地址 如果是 证书颁发机构 的电子邮件地址是什么
  • 将自定义属性添加到 WebGrid 呈现的表中

    我正在使用 MVC3 WebGrid 并且想要将 data xxx 形式的自定义属性添加到 table 元素渲染者WebGrid GetHtml 我尝试按如下方式执行此操作 grid GetHtml htmlAttributes new d
  • 路由器问题。当我在react-router版本6中更改任何路由器时,页面位置保持最后页面位置

    我使用了react router版本6 一切正常 但有一个问题是 当我更改任何路线时 假设这是 2 条路线 另一次联系 现在我在关于页面的中间 现在 当我单击 联系路由页面 时 路由器已更改 但问题是网页仍然保留在页面中间 一般来说 当我们
  • HttpListener 如何提供图像

    我正在制作一个简单的网络服务器来提供 html css js 和图像 用 C 完成 我正在使用 HttpListener 我可以让 html javascript 和 css 文件正常工作 我只是在处理图像时遇到了麻烦 这是我目前正在使用的
  • Unicode 字符渲染

    我找不到在 matlibplot 图表中呈现 unicode 字符的方法 coding utf 8 import matplotlib pyplot as plt from numpy random import normal from i
  • 我可以使用 JavaScript 检查客户端计算机上安装的软件吗?

    有没有办法使用 JavaScript 检查客户端计算机上安装的软件 例如 我想检查客户端计算机上是否安装了 Epson JavaPOS ADK 您无法使用 Javascript 来做到这一点 您无权访问本地文件系统
  • 如何从 html5 websocket 计算出有效负载大小

    如何通过 websocket 得知 html5 消息有效负载长度 我知道基本协议由操作码组成 然后长度由接下来的 1 到 8 个字节确定 然后以下值是散列 然后其余的是有效负载 我正在创建一个java服务器端应用程序 它将从html5客户端