我面临一个架构问题,至今还没有找到合适的解决方案。我有一台运行Linux的机器,只是通过以太网电缆连接到网络上,正在每秒从ADC(模数转换器)中采样值,采样值约为
请注意,我只希望在本地网络上工作。
现在,我认为我可以有一些JS框架通过在Ajax
我的感觉是,如果我继续这样做,我将浪费99%的数据从Linux盒子中获取少量数据到客户端Web应用程序。请注意,我还没有做Web应用程序。所以,我不知道它的实际表现如何。虽然我可以告诉您,Linux盒子上的服务器非常快。此外,它仅在本地运行。
一个更好的解决方案是如果能够使套接字在浏览器上工作。然后,这会快得多(我认为)。
你能提出更好的解决方案吗?我也接受在本地网络之外使用的解决方案。我正在寻找可扩展的解决方案。对于客户端应用程序,我打算使用ASP.NET Core。
我考虑过的东西:Web Sockets(使用C库?)?这样会更快吗?
3000个样本/秒
。在每个采样时刻,它实际上采样了ADC的所有8个通道。因此,我每秒钟有3000 * 8 DOUBLE
类型的值。
我的问题如下:实时将这些数据流式传输到运行Web应用程序的客户端,并使用某些Javascript框架在那里绘制它。 Linux盒子上的程序必须使用C编写。我试图避免类似于.NET Core可用的互操作性,以避免复杂性。
到目前为止我做了什么?
我实现了一个在C中运行并作为父进程的子进程的Web服务器,与之配套的程序会采样ADC值(实际上父进程不需要采样,我是在这个程序中加入了Demo)。该服务器可以响应GET
请求,并用JSON格式化的所有8个通道的值来响应,就像下面的截图所示。这是我从计算机发出的请求:
![screenshot of me calling the server on the box. Receiving JSON data back.](https://istack.dev59.com/6FSyN.webp)
现在,我认为我可以有一些JS框架通过在Ajax
GET
请求中不断调用192.168.1.95:8080
来接收来自这个Linux盒子的数据,并同时绘制所有8个通道。这可行吗?这种设计有多糟糕?这会导致浏览器崩溃吗?请注意,像屏幕截图中的那样的每个请求需要发送~260个字节
,响应(JSON)是~130个字节
(约50%的交换数据是HTTP头)。我的感觉是,如果我继续这样做,我将浪费99%的数据从Linux盒子中获取少量数据到客户端Web应用程序。请注意,我还没有做Web应用程序。所以,我不知道它的实际表现如何。虽然我可以告诉您,Linux盒子上的服务器非常快。此外,它仅在本地运行。
一个更好的解决方案是如果能够使套接字在浏览器上工作。然后,这会快得多(我认为)。
你能提出更好的解决方案吗?我也接受在本地网络之外使用的解决方案。我正在寻找可扩展的解决方案。对于客户端应用程序,我打算使用ASP.NET Core。
我考虑过的东西:Web Sockets(使用C库?)?这样会更快吗?
非常感谢您提供的任何信息。
代码方面,以下是代码:
https://github.com/giorgi3092/ECG_HW_SW_DE1_SoC/blob/master/adc_example/web_server/web_server2.c