【问题标题】:How to connect javascript in Amazon S3 bucket to Amazon time server?如何将 Amazon S3 存储桶中的 javascript 连接到 Amazon 时间服务器?
【发布时间】:2020-07-29 02:31:41
【问题描述】:

我有一个当前部署在 Amazon S3 存储桶中的 javascript 项目。在页面上,我想将时钟同步到时间服务器以提供更高的准确性。我目前有代码,可以尝试连接,但不确定如何正确同步到时间服务器:

  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-web-services amazon-s3 ntp


    【解决方案1】:

    如果 JavaScript 在 Amazon S3 上运行,那么它将被用作前端应用程序(取消连接服务器端的 NodeJS)。

    如果您正在寻找纯粹的前端解决方案来解决您的问题,那么您将受限于用户本地计算机的系统时间。

    如果您想使用亚马逊服务器进行同步,您需要使用一个后端应用程序,该应用程序可以从运行的服务器而不是用户机器上获取时间。

    最简单的方法是设置API GatewayLambda 组合,但您需要注意,用户机器连接到 API 然后接收到回应。

    【讨论】:

      猜你喜欢
      • 2016-03-31
      • 2013-06-25
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-11
      • 2011-09-10
      • 1970-01-01
      相关资源
      最近更新 更多