我是Web开发的新手。我正在创建一个Web应用程序,我需要使用ZMQ Library连续接收数据并实时更新html表。
我尝试了很多,只是成功接收了一个数据包。后来我以递归方式调用函数来获取所有数据包。但是,当我调用该函数时,我已经在间隙中丢失了一些数据包 以下是我在index.php和test.php中使用的javascript函数,用于使用ZMQ接收数据:
function samp(result)
{
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var x=document.getElementById('PageTable');
var rowCount = document.getElementById("PageTable").rows.length;
for (var i = 0; i < rowCount; i++)
{
if(x.rows[i].cells[2].innerHTML == xmlhttp.responseText)
{
x.rows[i].cells[3].innerHTML=xmlhttp.responseText;
}
}
samp(result);
}
};
xmlhttp.open("GET","test.php?q="+result,true);
xmlhttp.send();
}
<?php
$Params = $_REQUEST["q"];
$context = new ZMQContext();
$subscriber = new ZMQSocket($context, ZMQ::SOCKET_SUB);
$subscriber->connect("tcp://localhost:5000");
$mnemonic = explode(" ", $Params);
foreach ($mnemonic as $value)
{
if($value!="")
{
$subscriber->setSockOpt(ZMQ::SOCKOPT_SUBSCRIBE, $value);
}
}
$contents = $subscriber->recv();
echo $contents;
我甚至尝试在javascript函数中运行php脚本但没有运气。我也尝试在test.php中使用无限循环来接收数据如下,但现在当循环没有结束时,我甚至停止接收一个数据包。
while(true)
{
$contents = $subscriber->recv();
echo $contents;
}
任何帮助解决此问题或甚至建议任何不同的方法都非常感谢。谢谢。