每秒使用XMLHttpRequest与使用Web套接字的可行性?

时间:2018-03-21 23:34:23

标签: javascript

我希望得到关于我是否应该每秒使用XMLHttpRequest来检索实时数据或Web套接字的澄清。

我之前曾问过somewhat similar question earlier,虽然这次我觉得我对我的选择有了更好的把握,并希望了解更多。

以前,我的获取代码是这样的:

var fetch = "";

startitall();
function startitall(){
   fetch = setInterval(livedata, 1000);    
}

function livedata(){
var exhaitch = new XMLHttpRequest();
var exlink = "wheremydatais.com";
exhaitch.onreadystatechange = function(){
  if (this.readyState == 4 && this.status == 200){
    console.log(JSON.parse(this.responseText));}
  }
exhaitch.open("GET", exlink, true);
exhaitch.send();
}

在完成一些阅读后,我了解到这个问题是每次发送数据时呼叫都会关闭,从而使其效率低下。这是通常需要Web套接字的地方,因为它们在有客户端时保持连接打开。

话虽如此,在我之前的问题中,我通过以下代码介绍了解决方案:

 function getMyData(){

  var exhaitch = new XMLHttpRequest();
  var exlink = "wheremydatais.com";
  exhaitch.onreadystatechange = function(){
    if (this.readyState == 4 && this.status == 200){
      console.log(JSON.parse(this.responseText));
      getMyData();
    }
  }
  exhaitch.open("GET", exlink, true);
  exhaitch.send();
}

我认为这个答案中的想法是在第一个onchange事件期间运行一个新的调用,使得在不中断关闭连接的情况下获取新数据。

我想知道的是,性能方面,这是否像运行Web套接字一样可行? XMLHttpRequest关闭不会对性能产生影响吗?我还没有关闭并打开每个电话的新连接吗?

我要求确定是否应该更改我的基础架构以实现Web套接字,或者XMLHttpRequest方法是否足够。我不需要双向数据绑定,我的数据大约是600字节。

非常感谢见解。

1 个答案:

答案 0 :(得分:1)

答案取决于您的申请要求。

如果您希望用户长时间停留在页面上(大量轮询),或者可能会有许多并发用户,并且您的有效负载仍然相对较小,那么套接字可能就是这样。< / p>

如果您希望用户快速反弹,或者显着增加有效负载大小,最好使用服务器上的专用GET路由进行管理。

我见过大规模,高流量的网站都使用这两种方法,而且我个人使用这两种方法并没有多少问题。如果使用Node.js后端,套接字特别容易设置,并且每个实例可以支持超过250,000个并发连接。