Ich weiß, diese Frage wurde schon so oft gestellt. Aber ich konnte mein Problem nicht lösen.
Ich versuche, eine Verbindung zu einem Remote-Knoten herzustellen, der sich auf einem Server befindet.
Auf meinem Server läuft geth auf rinkeby und RPC sollte dank dieses Befehls aktiviert werden:
admin.startRPC("0.0.0.0", 8545, "*", "web3,db,net,eth")
In meinem Code (NodeJS) habe ich Folgendes:
function getNode(callback) {
var web3;
console.log(web3);
web3 = new Web3(new Web3.providers.HttpProvider("https://X.X.X.X:8545"));
console.log(web3);
if (web3 != null) {
console.log("GOT WEB3");
callback(null, web3);
} else {
console.log("did not get web3");
callback("ERROR", web3);
}
}
Die web3-Variable ist beim ersten Protokoll nicht definiert und gibt ein Objekt zurück, nachdem ich den HTTP-Anbieter erhalten habe.
Allerdings habe ich diesen Fehler in meiner Konsole:
Fehler: Ungültige JSON-RPC-Antwort: „“ bei Object.InvalidResponse (D:\node_modules\web3\lib\web3\errors.js:38:16) bei XMLHttpRequest.request.onreadystatechange (D:\node_modules\web3\lib\web3 \httpprovider.js:119:24)
Was habe ich falsch gemacht?
Bearbeiten: TCP und UDP sind alle auf Port 8545 geöffnet.
AKTUALISIERUNG 1
Aktueller Befehl zum Starten von geth:
geth --rinkeby console -rpc -rpcaddr "0.0.0.0" --rpccorsdomain "*"
Aktueller NodeJS-Code:
function getNode(callback) {
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider("https://server_external_ip:8545/"), function(error, result) {
if (error) {
console.log(error);
callback("ERROR", web3);
} else {
console.log(web3.isConnected());
callback(null, web3);
}
});
}
Das ist, was netstat mir gibt:
tcp6 0 0 :::8545 :::* LISTEN 3565/geth
Ergebnis: Serverless gibt mir eine Zeitüberschreitung. Wenn kein Timeout angegeben ist, läuft es endlos, ohne etwas zu bekommen.
Sie müssen geth auf die IP-Adresse hören lassen, von der aus Ihr Server extern erreichbar ist:
admin.startRPC(<external ip address>, 8545, "*", "web3,db,net,eth")
Wenn Sie localhost angeben, akzeptiert geth nur lokale Verbindungen, dh Verbindungen, die von derselben Maschine kommen, aber nicht von entfernt.
Error: listen tcp MY.IP.IS.HERE:8545: bind: cannot assign requested address
lsof -i TCP| fgrep LISTEN
Hast du das zB mit (unter Linux)
überprüft ?geth 2809 myname 33u IPv6 47912 0t0 TCP *:30303 (LISTEN)
Gleicher Fehler für zufällige PortsError: HTTP server already running on 0.0.0.0:8545
SCBürgel
Web3
durequire
in deinem Code?Wiederholung 122442