【发布时间】:2021-12-31 05:51:18
【问题描述】:
我有一个用 nodejs 中的 express 制作的 websocket 服务器
Websocket 文档指出websocket.send() 可以传递字符串或数组缓冲区。现在我想通过 websocket 向客户端发送大量对象(格式化时为 200k 行)。发送此类数据的最佳方式是什么。
我尝试过的:我尝试过通过字符串化直接发送它,现在这完全可以正常工作,但延迟很长。
那么有什么方法可以在保持速度不变的情况下向客户端发送如此庞大的数组数据?我认为数组缓冲区可能会有所帮助,但我找不到任何建议的示例
此外,如果此问题是特定于代码的,请在评论中告诉我,以便我也可以共享代码 sn-ps。
【问题讨论】:
-
你的客户端是什么类型的应用程序?
-
@JRichardsz Client 是 kotlin 制作的安卓应用
-
以多个较小的块发送数据,而不是一个非常大的数据块。包括客户端期望的块编号和总块,以便客户端知道何时收到所有块。另一种选择是向客户端发送一个唯一的 Web 链接,然后让客户端使用该唯一的 Web 链接从您的 Web 服务器进行大量下载,因为 http 在大量下载时经过了很好的练习,而 webSocket 则没有那么多。
-
@jfriend00 如果涉及到像这样的二进制文件,我实际上是个新手,但我想我可以采用链接的想法,这也可能是解决方案。让我测试这个后发布更新
-
通常使用套接字来处理实时消息传递,牺牲 http 特性以实现轻量和快速的目标。传输大量数据与此背道而驰。为什么需要该功能的套接字?为什么经典的 http 路由不适合您?