-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver_time.js
More file actions
26 lines (24 loc) · 809 Bytes
/
server_time.js
File metadata and controls
26 lines (24 loc) · 809 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function getTimeDiff(address="/timestamp", timeHeader="X-Time", msecHeader="X-Msec"){
return fetch(address).
then(response=>{
let time = Date.now();
let headers = response.headers;
let serverTimeHeader = headers.get(timeHeader);
if(!serverTimeHeader){
throw new Error('No time in the response');
}
let serverTime = new Date(serverTimeHeader);
let millisHeader = headers.get(msecHeader);
if(millisHeader){
let millisSplit = millisHeader.split(".");
if(millisSplit.length>1){
let millis = parseInt(millisSplit[1], 10);
if(!isNaN(millis) && millis<1000 && millis>0){
serverTime.setUTCMilliseconds(millis);
}
}
}
return serverTime - time;
});
}
export {getTimeDiff};