websocket实现的性能比较

pid*_*pid 2 performance websocket node.js

编辑:为了防止关闭这个问题,我将其范围缩小到本质。

有人可以分享下面列出的两个 websocket 实现之间的性能测试(以 MB/s 为单位)吗?应用程序或硬件细节无关紧要,对于一个简单的常见场景,只需两个粗略的数字就足够了。


原问题

有人测试了这两个Node.js的 websocket 实现的性能吗?

我找不到最近的任何内容(只是 2012-2013 年的一堆文章)。我希望看到的是:

  • 开销(如果有的话,考虑到实际的网络延迟更相关,我猜它们都收敛到 0)
  • 吞吐量(相同应用程序/硬件的简单 MB/S 数字就很好)
  • 我们真的可以在网络级别上广播数据吗(尽管有底层 TCP?这可能吗?)或者它只是一个被滥用的方法名称(实际上在循环中向许多客户端发送相同的消息for())?

更好的是:

  • 使用/不使用 Nagle 算法的比较
  • JSON 与二进制消息的比较

pid*_*pid 5

编辑:更新了有关更新、更快实施的信息

我在这里整合了NiCk Newman2016 年 6 月 17 日 20:08评论,以避免它以任何方式丢失。

uWS是 websockets 更新且更快的实现。几位开发人员报告了有希望的结果。对于简单的情况,这几乎是理所当然的。因此,下面的讨论在某种程度上被取代。


我想知道为什么没有人能回答这个问题。因此,经过更多小时的搜索,我终于来到了这个页面,其中给出了一些答案。

我将其发布在这里并回答我自己的问题,以便其他搜索它的人更容易找到它。

该页面是ws 的基准比较。是的,它非常简单,但不知何故被掩盖了。

以下是相关结果:

就我而言,我想发送 4-16KB JSON 消息(即使 4KB 也有点夸张,大多数消息只有 100-200 个字符)。第一张图显示,对于 64KB 以下的数据,根本没有明显的差异。仅对于较大的消息(大约 16MB),ws 比 websocket-node 更快变得越来越明显。

对于二进制消息,两者是相同的(如果不相同)。这让我想知道他们是否以某种方式在 GitHub 上互相借用了代码。顺便说一句,这会很好,因为两者在 GitHub 上可以共享和分叉等等。

下图显示了消息碎片,这与流媒体相关,但我对此不感兴趣。所以上面回答了我的问题:

  1. 对于非碎片短信(最多 16MB),性能相同
  2. 性能与非碎片二进制消息相同(无大小限制)