Smoothie图表实时高速数据 我从C++脚本中得到了一个高速数据输出,一个int每800微秒(~1.6kHz)产生,我在WebSoCKD中运行这个流,将它流到同一台机器上的Web服务器上的一个SimuleCad上。我发现使图表尽可能平滑的最好方法是向websocket输出100个数据点的数组。在我的smoothie javascript中,它分割数组,然后在最后一个数组和这个数组之间添加任意分布的X值的数据 ' conn.onmessage = function(evt) { $("#log").text("Connected"); var arrZ = evt.data.split(','); newTime = new Date().getTime(); var timeInterval = (newTime - oldTime)*0.01 for (i=0;i<100;i++){ timeSeries.append(oldTime, arrZ[i]); oldTime += timeInterval; } oldTime = new Date().getTime();}; ' ' conn.onmessage=函数(evt){ $(“#日志”).text(“已连接”); var arrZ=evt.data.split(','); newTime=newdate().getTime(); 变量时间间隔=(新时间-旧时间)*0.01 对于(i=0;i

Smoothie图表实时高速数据 我从C++脚本中得到了一个高速数据输出,一个int每800微秒(~1.6kHz)产生,我在WebSoCKD中运行这个流,将它流到同一台机器上的Web服务器上的一个SimuleCad上。我发现使图表尽可能平滑的最好方法是向websocket输出100个数据点的数组。在我的smoothie javascript中,它分割数组,然后在最后一个数组和这个数组之间添加任意分布的X值的数据 ' conn.onmessage = function(evt) { $("#log").text("Connected"); var arrZ = evt.data.split(','); newTime = new Date().getTime(); var timeInterval = (newTime - oldTime)*0.01 for (i=0;i<100;i++){ timeSeries.append(oldTime, arrZ[i]); oldTime += timeInterval; } oldTime = new Date().getTime();}; ' ' conn.onmessage=函数(evt){ $(“#日志”).text(“已连接”); var arrZ=evt.data.split(','); newTime=newdate().getTime(); 变量时间间隔=(新时间-旧时间)*0.01 对于(i=0;i,javascript,c++,Javascript,C++,而言,问题在于,在底层,您使用的是TCP/IP数据包。而且,每次更新时只有几位数据,这些数据包不会立即满。您的操作系统有合理的预期,等待一点将提高带宽,因为它可以以更少的数据包头发送相同数量的原始数据 但是,这会适得其反。您关心的是延迟,而不是数据。最简单的解决方案是在数据包中填充虚拟数据。每个值在格式化和填充后应为~1500字节

而言,问题在于,在底层,您使用的是TCP/IP数据包。而且,每次更新时只有几位数据,这些数据包不会立即满。您的操作系统有合理的预期,等待一点将提高带宽,因为它可以以更少的数据包头发送相同数量的原始数据

但是,这会适得其反。您关心的是延迟,而不是数据。最简单的解决方案是在数据包中填充虚拟数据。每个值在格式化和填充后应为~1500字节