我有一个用c++编写的程序,可以从这个板上读取值。无论如何,那部分并不重要。我所拥有的是不断变化的数据,我喜欢将这些数据绘制出来。我希望使用网络浏览器来显示数据,因为有很多开源的图表是用JavaScript编写的所以我的问题是从我的c++程序向浏览器发送数据
我已经调查过了,UDP在浏览器中还不可用,所以我必须使用TCP。TCP网络套接字没有那么快,我想使用html5本地存储。我的意思是,让我的c++程序写入localStorage上的数据库,然后javascript将等待该变量的值存在,并发明某种协议来实现这一点。本地存储非常快,例如:
<script type="text/javascript">
var counter = 0;
window.onload = function () {
function Test() {
counter++;
localStorage.p = counter + ""; // perform write
var read = localStorage.p; // perform read
if (read == "5000")
alert((new Date() - now)); // shows 45
else
Test(); // loop again
}
var now = new Date();
Test();
}
</script>
该脚本耗时54毫秒,读取和写入5000次这意味着下次我将不为浏览器创建插件,而是实现某种协议,使我能够使用localStorage交换信息。例如,我可以让浏览器等待变量x的存在。一旦它存在,我就会通过浏览器创建一个变量y,通知c++程序它已经准备好接收数据了,等等。localStorage只是一个位于c:\Users[USER]\AppData\Local\Google\Chrome\USER data\Default\Local Storage上的sqlite数据库
我还没有在网上看到任何人使用这种方法。也许这太危险了,Sqlite不能很好地处理多个线程,我会浪费时间创建这个程序。
那么我应该开始实现这个协议吗?我应该使用websocket吗?或者我应该试试https://stackoverflow.com/a/10219977/637142?
我会使用node.js作为从C++到浏览器的中间件,而不是直接使用websocket(已经做到了)http://socket.io/这会让你的生活更轻松:)