2017-05-10 45 views
1

IPFS를 처음 사용하고 JavaScript가 새로 도입되었지만 기본적인 IPFS 리디렉션을 작성했습니다. 내 브라우저에서 실행중인 userscript : 주소가 *://*/ipfs/* 또는 *://*/ipns/* 인 경우 스크립트가 실행되어 http://localhost:8080/<IPFS_HASH>으로 리 라우팅됩니다.IPFS 및 JavaScript : 로컬 IPFS 노드가 활성화되어 있는지 브라우저에서 확인하기 위해 localhost : 8080에서 404 상태를 확인하십시오.

그러나 로컬 IPFS 노드가 실행되지 않는 경우가 있으므로 로컬 호스트 : 8080에서 아무런 변화가 없으므로 리 라우팅을 보내지 않습니다. 그래서 제 질문은 브라우저 내 JS 사용자 스크립트 (내 경우에는 Tampermonkey가있는 Safari)가 localhost : 8080에 도달 할 수 있는지 판단 할 수있는 방법입니다. 도달 할 수없는 경우 스크립트는 아무 것도하지 않고 도달 할 수 있으면 리디렉션을 시작합니다.

로컬 IPFS 노드가 로컬 호스트, 활성

: 8080 반환

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

를 "404 페이지를 찾을 수 없습니다"... 그리고 노드가 비활성 상태 일 때, 사파리가 아무것도에 도달 할 수 없습니다

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

그래서 가장 쉬운 것은 (아마도) curl -o /dev/null --silent --head --write-out "%{http_code}\n" localhost:8080에 자바 스크립트에 해당 작업을 수행하는 것입니다 : 그것은, IPFS가 활성화하고, 스크립트가 다시 라우팅됩니다 "404"를 반환하는 경우; "000"을 반환하면 IPFS가 비활성화되고 스크립트는 아무 작업도 수행하지 않습니다.

그럼 JavaScript로 어떻게해야합니까? 도와 줘서 고마워.

답변

2

XMLHttpRequest를 사용하여 서버에 쿼리 할 수 ​​있습니다. 예 : here.

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(""); 
+0

Github의 사용자는 이미 나에게 빠른 해결책을 제공했습니다. https://github.com/JayBrown/IPRedirect/blob/master/IPRedirect.js#L19-L24 ... IPFS WebUI의 png 파일 중 하나를 확인하고 있습니다. – JayB