簡體   English   中英

如何將 Amazon S3 存儲桶中的 javascript 連接到 Amazon 時間服務器?

[英]How to connect javascript in Amazon S3 bucket to Amazon time server?

我有一個 javascript 項目,目前部署在 Amazon S3 存儲桶中。 在頁面上,我想將時鍾同步到時間服務器以提供更高的准確性。 我目前有代碼,可以嘗試連接,但不確定如何正確同步到時間服務器:

  try {
        //FF, Opera, Safari, Chrome
        var xmlHttp = new XMLHttpRequest();
        xmlhttp.open("GET", "169.254.169.12", false);
        xmlhttp.send();

        var dateStr = xmlhttp.getResponseHeader('Date');
        var serverTimeMillisGMT = Date.parse(new Date(Date.parse(dateStr)).toUTCString());
        var localMillisUTC = Date.parse(new Date().toUTCString());
        return serverTimeMillisGMT -  localMillisUTC;

    }
    catch (err1) {
        //IE
        try {
            var xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
            xmlhttp.open("GET", "169.254.169.12", false);
            xmlhttp.send();

            var dateStr = xmlhttp.getResponseHeader('Date');
            var serverTimeMillisGMT = Date.parse(new Date(Date.parse(dateStr)).toUTCString());
            var localMillisUTC = Date.parse(new Date().toUTCString());
            document.getElementById("serverTime").innerHTML = "This clock is synced to a time server.";
            return serverTimeMillisGMT -  localMillisUTC;
        }
        catch (err2) {
            try {
                xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
                xmlhttp.open("GET", "169.254.169.12", false);
                xmlhttp.send();

                var dateStr = xmlhttp.getResponseHeader('Date');
                var serverTimeMillisGMT = Date.parse(new Date(Date.parse(dateStr)).toUTCString());
                var localMillisUTC = Date.parse(new Date().toUTCString());
                document.getElementById("serverTime").innerHTML = "This clock is synced to a time server.";
                return serverTimeMillisGMT -  localMillisUTC;
            }
            catch (err3) {
                //use CPU time.
                console.log("using machine time...");
                document.getElementById("machineTime").innerHTML = "This clock is synced to machine time.";
                return 0;
            }
        }

我目前有時間服務器的 IP 地址( https://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/windows-set-time.html#windows-configuring-ntp ),但這不起作用。

關於如何與亞馬遜時間服務器同步的想法?

謝謝!

如果 JavaScript 在 Amazon S3 上運行,那么它將被用作前端應用程序(取消連接服務器端的 NodeJS)。

如果您正在尋找一個純粹的前端解決方案來解決您的問題,那么您將受限於用戶本地計算機的系統時間,而無法調用后端。

如果您想使用亞馬遜服務器進行同步,您需要使用一個后端應用程序,該應用程序可以從運行的服務器而不是用戶機器上獲取這個時間。

最簡單的方法是設置API 網關Lambda組合,但您需要注意,連接到 API 然后接收響應的用戶機器仍然存在往返延遲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM