我正在创建XMLHttpRequest,在浏览器中发生某些用户事件时,将字符串发布到nodejs服务器,但并非每个事件都将其发送到服务器。
基本上是我为每个浏览器事件调用的功能:
function xhr_event(timeStamp){
xhr=new XMLHttpRequest()
xhr.open("POST",'/record_event');
console.log(timeStamp.toString())
xhr.send(timeStamp.toString())
}
其中timeStamp=event.timeStamp
在客户端,每个事件都记录到控制台。在服务器端,并非所有事件都显示为POST。据我所知,丢失的事件是随机的。
我了解了浏览器缓存,但我认为这不是问题所在,因为每个有效负载都有唯一的时间戳?再说一次,我没有对标题进行任何编码或设置,所以也许是问题所在吗?
正如@mottek在评论中提到并解释的,在var
解决问题之前添加let
(或const
或xhr
)。
我没有意识到xhr=new XMLHTTPRequest()
创建一个全局变量。
我也通过使用post
使fetch
能够始终如一地工作:
fetch('/record_event', {
method: 'post',
headers: {
'Content-Type':'text/plain'
}
body: 'timeStamp.toString()'
}