syncServerTime.ts 735 B

12345678910111213141516171819202122232425262728
  1. let initLocalTime = null;
  2. let initServerTime = null;
  3. function getStorgeTime() {
  4. const st = localStorage.getItem("st");
  5. const unvalidVals = ["Infinity", "NaN", "null", "undefined"];
  6. if (unvalidVals.includes(st + "")) {
  7. return [Date.now(), Date.now()];
  8. } else {
  9. const [s, t] = st.split("_");
  10. return [s * 1, t * 1];
  11. }
  12. }
  13. const [serverTime, localTime] = getStorgeTime();
  14. initSyncTime(serverTime, localTime);
  15. function initSyncTime(serverTime, localTime = Date.now()) {
  16. initLocalTime = localTime;
  17. initServerTime = serverTime;
  18. localStorage.setItem("st", `${initServerTime}_${initLocalTime}`);
  19. }
  20. function fetchTime() {
  21. return Date.now() + initServerTime - initLocalTime;
  22. }
  23. export { initSyncTime, fetchTime };