【问题标题】:Node Websocket: Best way to send large array data to clientsNode Websocket:向客户端发送大型数组数据的最佳方式
【发布时间】: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 路由不适合您?

标签: node.js arrays websocket


【解决方案1】:

通常使用套接字来处理实时消息传递,牺牲了常见的 http 功能,目标是轻量级和快速。检查:

传输大量数据与此背道而驰。检查:

建议 1

使用套接字来检测加密货币代码发生变化的实时通知应该使用套接字。

当客户端知道(感谢套接字)有一个新的或更新的加密代码(很大)后,使用普通 http 代替套接字作为 @jfriend00 下载它 在 cmets 中也有推荐。

此外,如果数据很大,您应该使用一种方法来拆分数据并使用普通的 http 而不是套接字来逐块发送。

建议 2

正如@jfriend00所说以及主要的文件主机服务所做的那样,实现和算法来分割数据并逐部分发送给客户端。

如果块或部分很小,也许你可以使用 sockets 但这是一个常见的功能,所以使用已知的方式:common http

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2015-05-30
    • 2016-10-19
    相关资源
    最近更新 更多