1

我是 IPFS 的新手,对 JavaScript 来说绝对是新手,但我设法编写了一个在我的浏览器中运行的基本 IPFS 重定向用户脚本:只要地址类型为*://*/ipfs/*or *://*/ipns/*,脚本就会启动并重新路由到http://localhost:8080/<IPFS_HASH>.

但是,有时本地 IPFS 节点没有运行,因此重新路由被发送到虚无,因为 localhost:8080 上没有任何事情发生。所以我的问题是,如果有办法让浏览器中的 JS 用户脚本(在我的例子中:带 Tampermonkey 的 Safari)确定 localhost:8080 是否可以访问。如果无法访问,脚本将不执行任何操作,如果可以访问,它将启动重定向。

当本地 IPFS 节点处于活动状态时,localhost:8080 返回“404 page not found”

http://i.imgur.com/S1vDQLy.png

…当节点处于非活动状态时,Safari 无法访问那里的任何内容:

http://i.imgur.com/Q2TF2MQ.png

所以最简单的事情(可能)是做相当于的JavaScript curl -o /dev/null --silent --head --write-out "%{http_code}\n" localhost:8080:如果它返回“404”,IPFS是活动的,脚本将重新路由;如果它返回“000”,则 IPFS 处于非活动状态,脚本将不执行任何操作。

那么我该如何使用 JavaScript 来解决这个问题呢?谢谢您的帮助。

4

1 回答 1

2

您可以使用 XMLHttpRequest 来查询服务器。示例来自这里

var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
                // Request finished; either succesful or via timeout
                alert(xhr.status);
        }
};

xhr.open("POST", "http://localhost:8080", true);
xhr.timeout = 4000; // Set timeout to 4 seconds (4000 milliseconds)
xhr.ontimeout = function () { alert("Timed out!!!"); }
xhr.send("");
于 2017-08-06T18:25:53.560 回答