我正在使用 Node.js 开发一个视频流应用程序。由于它可能会消耗大量网络带宽,我想知道如何在 node.js 中跟踪应用程序以及整个系统本身的带宽使用情况?
所需输出的示例:
此应用程序:100 kb Rx 18 mb Tx
总计:200 kb Rx 20 mb Tx
最佳答案
拥抱自己,因为这并不容易。
我发现的唯一据称跟踪网络流量的nodejs模块是network-debugger 。不过,我不太相信您会在该项目中找到问题的答案。
网络监控通常是高度特定于操作系统的:
- Windows:唯一的选择是 WinPCap
- MacOS:上网本。很少有 Linux 网络实用程序端口也可以工作。
- Linux:你是幸运的人。最近nethogs是最流行的网络顶级实用程序,并且大多数发行商都可以通过其包管理器使用。请看一下这个比较article了解有关 Linux 网络工具的更多信息。
是的,你是对的,它不是一个nodejs库,但正如你所猜测的那样,没有一个库。部分原因可能是因为系统管理员总是更喜欢基于控制台的一件事工具来监控他们的服务器,因此在 Node 中实现网络监控库的需求非常小。
为了达到预期目的:
- 选择一种可用的网络工具。
- 尝试一下,看看它是否是您想要的(它们是不同的,因此请务必尝试几次)。
- 如果您喜欢它提供的信息,请了解如何将其输出为管道友好的格式。
- 现在您需要 Node.js 服务器在管道模式下启动该工具并捕获输出。
- 完成。
有一个有趣的 article详细介绍如何使用现有的基于控制台的工具在 Node.js 中编写系统监视器,可能会有很大帮助。 您可能必须选择这些基于控制台的工具之一,了解如何以管道友好模式启动它(以便可以将输出通过管道传输到文件或流到您的 Node.js 服务器)
或者,您可以重新发明轮子并在 Node.js 中制作自己的网络监控工具,但我担心它最终会变成一半 JavaScript、一半 C 或 Objective-C 中的操作系统特定代码。
另请注意,您需要管理权限(Windows 上的 sudo 或 admin 用户)才能监控网络。这意味着您可能必须以提升的权限运行node.js。这是需要记住的额外风险。
关于javascript - 如何在node.js中获取网络静态信息,例如Rx/Tx字节(/数据包),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25682380/