【问题标题】:Can't send messages larger than 1410 bytes using websockets in Android无法在 Android 中使用 websockets 发送大于 1410 字节的消息
【发布时间】:2021-07-15 20:11:32
【问题描述】:

我正在使用 websockets 编写一个 Web 应用程序,但发现一些奇怪的东西:在 PC 下,我可以发送大尺寸的 blob,但在 Android 下,不会发送任何大于 1410 字节的消息(更糟糕的是:连接已关闭),在 Chrome 和 Firefox 中。我试图将数据切成块,大小为 1400 字节,然后手动发送。它有效,但不是最理想的。

我必须做什么才能在 Android 下发送至少 64Kbytes 的消息?

谢谢。

【问题讨论】:

  • 在 WebSocket 协议中,最大帧大小为 2^63 字节,一条消息可以包含多个帧,因此一条消息实际上是无限的。所以问题一定出在Android的实现协议上。许多实现确实对帧/消息大小施加了限制,默认情况下通常范围为 8K-64K。听起来Android对此更加严格。不过,我不知道 Android 是否/如何允许增加限制。

标签: javascript websocket


【解决方案1】:

也许尝试压缩?比如使用base64(web最常用的算法)或者zlib等来减少消息服务器接收时的大小和解压。

【讨论】:

  • 不幸的是,数据是 JPEG,因此不可压缩。此外,base64 不是一种压缩算法,而是相反:转换为 base64 的二进制 blob 占用多 33%。另外,问题出在发送方(安卓手机),而不是接收方。
猜你喜欢
  • 2018-08-09
  • 2023-03-28
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-21
相关资源
最近更新 更多