如何将AmazonS3 bucket中的javascript连接到Amazon时间服务器



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

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-配置ntp(,但这不起作用。

关于如何与亚马逊时间服务器同步的想法?

谢谢!

如果JavaScript在AmazonS3上运行,那么它将作为前端应用程序(取消服务器端NodeJS的链接(。

如果你正在寻找一个纯粹的前端解决方案来解决你的问题,那么如果不能调用后端,你将被限制在用户本地机器的系统时间内。

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

这可以通过设置API网关和Lambda组合来实现,但您需要注意,用户机器连接到API然后接收响应的往返行程仍会延迟。

相关内容

  • 没有找到相关文章