【问题标题】:Keeping connection alive in Javascript / XMLHttpRequest在 Javascript / XMLHttpRequest 中保持连接活跃
【发布时间】:2019-08-24 03:26:30
【问题描述】:

我正在构建一个应用程序,该应用程序侦听某个外部 url 的内部连接,并将其内部加载的内容插入到我最后的新页面中。

我上面的陈述可能听起来令人困惑,但外部 URL 的一个很好的模拟是 Instagram 故事 当您访问此外部站点时,它会在浏览器中完成加载(滚动图标停止,但这不会停止未见更新的请求)

我已经使用在 npm 上运行的 nodejs 构建了一个 JavaScript 服务器并设置了内容标题

我还使用 htaccess 使其保持活动状态,以便我可以收听并加载新的内部连接

Header set Connection keep-alive>

但似乎不起作用

    if(err){

        if(err == 'ENOENT'){
            res.writeHead(404, {'Content-Type' : 'text/html'});
            res.write(path.join(__dirname, 'public', '404.html'));
            res.end();

        }else{
            res.writeHead(500, {'Content-Type' : 'text/html'});
            res.write('<enter><h1>Some server error just occured .... </h1></center>');
            res.end();
        }

    }else{
        res.writeHead(200, {'Content-Type' : contentType, 'Connection':' keep-alive', 'Transfer-Encoding':' chunked', 'Accept':' */*', 'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'});
        res.write(content);
        res.end();
    }

我希望每次连接在地下运行时都能获得新加载的内容,而无需重新加载浏览器,就像滚动浏览 Instagram 状态/故事一样

【问题讨论】:

  • 如果你的服务器正在运行nodejs,你为什么要标记PHP

标签: javascript php .htaccess http


【解决方案1】:

我认为这是错误的方法。你可以让它每 5 秒检查一次,看看客户端是否有新的东西。

function checkURL(){
    var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            document.write(this.responseText);
        }
    };
    xhttp.open("GET", "https://example.com/", true);
    xhttp.send();
}
setInterval(checkURL,5000); //5000 = 5 seconds

如果您必须在 Node.JS 中执行此操作,请查看此帖子: HTTP keep-alive in node.js

【讨论】:

  • 我也确实这样做了,但它只加载 url 的第一页然后结束连接
  • 你能多介绍一下你的项目吗?
  • 当您访问 instagram.com/stories/@username/ 时,它会加载第一个连接的第一页(如果您使用 xmlhttprequest 来获取内容,它会返回一个只有站点徽标的页面) 然后停止并通过我认为是 xmlhttprequest 加载其余部分
  • 不是全部,它只返回第一个建立连接的内容
  • 内容有多少数据?
猜你喜欢
  • 2011-05-21
  • 2011-08-07
  • 2020-12-06
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
  • 2020-01-22
  • 1970-01-01
  • 2011-12-26
相关资源
最近更新 更多