我正在尝试实现一个简单的Web服务(运行在使用以太网屏的Arduino板上),它可以通过反向AJAX向订阅的客户机提供(推送)信息。该web服务托管一个网页,该网页显示连接到该服务器主板的(2D-LIDAR)传感器的信息。只要传感器输出发生变化(非常频繁且迅速),查看该页面的客户端就应该立即更新。对于这个应用程序,反向AJAX /AJAX推送似乎是一个选择,但是我正在努力让服务器部分正常工作。这是我前面提到的网页中的内容,用来“监听”更新:
var xhr = new XMLHttpRequest();
xhr.multipart = true;
xhr.open( 'GET', 'push', true) ;
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
processEvents( window.JSON.parse( xhr.responseText ) );
}
}
xhr.send( null );我想让XmlHttpRequest永远运行,只要有一大块(JSON)数据从服务器端进来,就让它调用processEvents函数。但是,我不确定服务器响应,尤其是HTTP响应头应该是什么样子,才能使其按预期工作。每当我让服务器像这样发送HTTP响应头时
HTTP/1.1 200 OK\r\n
Connection: keep-alive\r\n
Content-Length: 100\r\n
Content-Type: text/json\r\n
\r\nXmlHttpRequest在接收到恰好一个“块”数据后结束。我也尝试过不使用"Content-Length“头,但是"Content-Type: multipart/mixed;boundary=...”或者"Transfer-Encoding: chunked“,但这两种方法都没有触发processEvents,可能是因为浏览器正在等待响应完成,不管这意味着什么。
因此,我正在寻找这样的HTTP响应AJAX-Push请求的工作示例。HTTP响应通常需要什么样的外观才能被无限期运行的XmlHttpRequest接受,并在新数据到达时触发processEvents?
顺便说一句。我用Firefox64.0试过这些东西。
发布于 2019-08-13 08:58:06
如果你正在寻找一个低延迟的基于http的通信,你应该看看websockets。你的带有Post方法的xmlhttp将有大约50毫秒的高延迟,相信我,我以前试过开发一个基于彩虹颜色选择器的rgb控制器,同步和异步post方法对我来说都不能很好地工作,脚本只是等待响应。
现在具体回答你的问题,下载postman,这是一个软件,允许你模拟所有你想要的http方法请求和头。还提供了在许多语言中实现的代码,不要忘记f12 on chrome > network tab,这样您就可以检查或http请求的输出是如何处理的
https://stackoverflow.com/questions/57469098
复制相似问题