Javascript 如何在JS中实时发送api请求?
对于这个XHR请求,它只发送一次请求,如果使用setTimeout完成,它可以重复发送请求,但如何实时发送呢?就像在一些网站上一样,我们可以看到比特币的实时价格。我读过关于EventSource的文章,但不明白它是如何使用的Javascript 如何在JS中实时发送api请求?,javascript,xmlhttprequest,Javascript,Xmlhttprequest,对于这个XHR请求,它只发送一次请求,如果使用setTimeout完成,它可以重复发送请求,但如何实时发送呢?就像在一些网站上一样,我们可以看到比特币的实时价格。我读过关于EventSource的文章,但不明白它是如何使用的 var xhr = new XMLHttpRequest() xhr.onload = function(){ if(this.status == 200){ document.write(this.responseText)'
var xhr = new XMLHttpRequest()
xhr.onload = function(){
if(this.status == 200){
document.write(this.responseText)'
}
}
xhr.open("GET","https://api.coindesk.com/v1/bpi/currentprice/USD.json",true);
xhr.send();
使用XHR,您可以通过setTimeout或setInterval来模拟Pull,但是如果您想要更多的即时响应,则必须设置WebSocket服务器 并非所有浏览器都支持websocket,因此您必须回到超时/间隔拉取
与XHR对象类似,WebSocket对象定义onopen、onmessage和onerror回调。使用XHR,您可以使用Pull by setTimeout或setInterval进行模拟,但如果您需要更即时的响应,则必须设置WebSocket服务器 并非所有浏览器都支持websocket,因此您必须回到超时/间隔拉取
与XHR对象类似,WebSocket对象定义onopen、onmessage和onerror回调。要通过EventSource获取数据,需要有一个实现SSE的服务器 服务器发送事件(SSE)是一种规范,允许服务器直接向订阅这些事件的客户端发送事件,类似于WebSocket和相关的服务器到客户端推送技术
EventSource
的实现如下所示(查看链接):
var-evtSource=neweventsource('sse.php');
var eventList=document.querySelector('ul');
evtSource.onmessage=函数(e){
var newElement=document.createElement(“li”);
newElement.textContent=“消息:”+e.data;
appendChild(新元素);
}
如果事件生成器脚本托管在不同的源上,则应使用URL和选项字典创建一个新的EventSource
对象
const evtSource=new EventSource(“//api.example.com/ssedemo.php”,{withCredentials:true});
在这种情况下,您使用的是REST API,而不是SSE,因此,要获得实时信息,您最好使用
setTimeout
函数每隔n个时间段重复Ajax调用。要通过EventSource获取数据,您需要有一个实现SSE的服务器
服务器发送事件(SSE)是一种规范,允许服务器直接向订阅这些事件的客户端发送事件,类似于WebSocket和相关的服务器到客户端推送技术
EventSource
的实现如下所示(查看链接):
var-evtSource=neweventsource('sse.php');
var eventList=document.querySelector('ul');
evtSource.onmessage=函数(e){
var newElement=document.createElement(“li”);
newElement.textContent=“消息:”+e.data;
appendChild(新元素);
}
如果事件生成器脚本托管在不同的源上,则应使用URL和选项字典创建一个新的EventSource
对象
const evtSource=new EventSource(“//api.example.com/ssedemo.php”,{withCredentials:true});
在本例中,您使用的是REST API,而不是SSE,因此,要获得实时信息,您最好使用
setTimeout
函数每隔n个时间段重复Ajax调用。有两种方法可以获取实时数据。1) 使用套接字2)池化AJAX调用。每1秒或每2秒设置一次间隔,这取决于应用程序,您可以调用它来集成最好的内容。顺便说一句,您不想做文档。编写。。。曾经特别是在异步环境中callback@Bravo为什么不文档。写?还有艾尔塞多姆的操纵。。。如果我没有记错的话,document.write in asynch callback将重写文档,因此擦除页面-我可能错了(虽然不经常发生)应该使用什么替代方法?有两种方法可以获取实时数据。1) 使用套接字2)池化AJAX调用。每1秒或每2秒设置一次间隔,这取决于应用程序,您可以调用它来集成最好的内容。顺便说一句,您不想做文档。编写。。。曾经特别是在异步环境中callback@Bravo为什么不文档。写?还有艾尔塞多姆的操纵。。。document.write in asynch callback将在我没有记错的情况下写入文档,因此擦除页面-我可能错了(虽然不经常发生)应该使用什么来代替?对于EventSource,我们需要访问服务器吗?不一定。如果事件生成器脚本位于不同的原点,则可以使用URL和选项字典创建EventSource对象。我将编辑我的答案并添加它。对于EventSource,我们是否需要访问服务器?不一定。如果事件生成器脚本位于不同的原点,则可以使用URL和选项字典创建EventSource对象。我将编辑我的答案并添加它。