使用此XHR请求,它只会发送一次请求,如果使用setTimeout完成,它可以重复发送请求,但是如何实时进行呢?像在某些网站上一样,我们可以看到实时比特币价格。我读到有关EventSource的信息,但不了解其用法。
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();
答案 0 :(得分:0)
使用XHR,您可以通过setTimeout或setInterval进行Pull模拟,但是如果要获得更多即时响应,则必须设置WebSocket服务器。
并非所有浏览器都支持websocket,因此您必须回退到“超时/间隔”拉取。
类似于XHR对象,WebSocket对象定义onopen,onmessage和onerror回调。
答案 1 :(得分:0)
要通过EventSource获取数据,您需要有一台实现SSE的服务器
服务器发送事件(SSE)是一项规范,它允许服务器将事件直接发送到订阅这些事件的客户端,类似于WebSockets和相关的服务器到客户端推送技术。
ShoppingCart
的实现类似于以下内容(请看this链接):
Receipt
如果事件生成器脚本位于其他来源,则应使用URL和选项字典创建新的EventSource
对象。
var evtSource = new EventSource('sse.php');
var eventList = document.querySelector('ul');
evtSource.onmessage = function(e) {
var newElement = document.createElement("li");
newElement.textContent = "message: " + e.data;
eventList.appendChild(newElement);
}
在这种情况下,您拥有REST API,而不是SSE,因此,获得实时信息的最佳方法是使用EventSource
函数每隔n个时间段重复Ajax调用