websocket实现的性能比较

时间:2015-07-22 13:13:01

标签: node.js performance websocket

编辑:为了防止关闭此问题,我只是将其缩小到必要条件。

  

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

原始问题

是否有人为 node.js 测试这两个websocket实现的性能?

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

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

更好:

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

1 个答案:

答案 0 :(得分:2)

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

我整合了 NiCk Newman 2016年6月17日20:08 评论,以避免它以任何方式迷失。

更快更快的websockets实现是uWS。几个开发者报告了有希望的结果。对于简单的情况,它几乎是不费脑子的。因此,下面的讨论有所取代。

我想知道为什么没人能回答这个问题。所以,经过更长时间的搜索,我已经完成了之后,我终于来到这个页面,给出了一些答案。

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

该页面是benchmark comparison of ws。是的,这很简单,但它被埋没了。

以下是相关结果:

在我的情况下,我想发送4-16KB的JSON消息(甚至4KB是夸大其词,大多数消息只有100-200个字符)。第一张图显示,对于高达64KB的数据,根本没有明显的差异。仅对于较大的消息(大约16MB),越来越明显的是ws比websocket-node更快。

对于二进制消息,两者都是相同的(如果不相同)。这让我想知道他们是否以某种方式在github上互相借用了代码。 btw就好了,因为github上的 ARE 要共享和分叉等等。

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

  
      
  1. 非碎片短信(最多16MB)的性能相同
  2.   
  3. 非碎片二进制消息的性能相同(无大小限制)
  4.