我从 IP 摄像机那里得到了这个想法,他们使用多部分标头发送 JPEG 帧,还使用 XML 来发送运动检测等事件。数据在随机时刻以一种方式流动,并且在一些超时后必须与服务器建立新连接。我之前已经为这些设备制作了客户端应用程序,但从未使用 AJAX,现在我正在尝试在 node.js 中制作类似的服务器
我知道我可以使用 socket.io,但我现在只是对使用这种方式感兴趣。可能吗?
这将每秒在有边界的块中写入当前日期,并在 telnet 中正常工作。
var http = require('http');
http.createServer(function(request, response) {
response.writeHead(200, {
'Content-Type': 'multipart/x-mixed-replace; boundary=boundary',
'Access-Control-Allow-Origin' : '*',
'Connection': 'keep-alive'
});
setInterval(function () {
response.write('--boundary\r\n', 'ascii');
response.write('Content-Type: text/plain\r\n', 'ascii');
response.write('\r\n', 'ascii');
var date = new Date();
response.write(date.toString() + '\r\n\r\n', 'ascii');
}, 1000);
}).listen(8080);
将记录当前就绪状态的 AJAX 连接
var url = "http://localhost:8080";
var xhr = $.ajax({
'url': url,
'success' : function(html) {
$('body').append(html);
}
});
xhr.onreadystatechange = function() {
console.log(xhr.readyState,xhr.status,xhr.responseText);
}
我得到的只是就绪状态“4”和状态“0”,也在我的网络工具中看到“已取消”标题错误。
当我丢失 multipart/x-mixed-replace 并将其推送到正常的 HTTP 连接时,我得到多个就绪状态“3”但没有数据。