gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 02:14:39 25 4
gpt4 key购买 nike

我希望得到关于我是否应该使用 XMLHttpRequest 每秒检索实时数据还是 Web Sockets 的澄清。

我之前问过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 期间运行一个新的调用事件,使其能够在不中断关闭连接的情况下获取新数据。

我想知道的是,就性能而言,这与运行网络套接字一样可行吗? XMLHttpRequest 关闭是否仍然会对性能产生影响?我是否仍然没有在每次调用时关闭并打开新连接?

我问这个问题是为了确定我是否应该更改我的基础设施来实现 Web 套接字,或者 XMLHttpRequest 方法是否足够。我不需要2路数据绑定(bind),我的数据大约是600字节。

见解将不胜感激。

最佳答案

答案取决于您的应用程序要求。

如果您希望用户在页面上停留很长时间(大量轮询),或者可能有许多并发用户,并且您的负载将保持相对较小,那么套接字可能是最佳选择。

如果您希望用户快速跳出,或者以其他方式显着增加负载大小,那么最好使用来自服务器的专用 GET 路由进行管理。

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

关于javascript - 每秒使用 XMLHttpRequest 与使用 Web 套接字的可行性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49418204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com