Ich habe die Dokumentation durchgesehen und fand das nicht hilfreich.
Ich würde gerne wissen, wie ich am besten einen Gesundheitscheck für meine Websocket-Verbindung zu Geth durchführen kann (Ich habe gestern herausgefunden, dass ich das neue Ereignis von vor ein paar Tagen ohne Grund nicht erhalten habe).
Ich habe eine Lösung, aber es ist wahrscheinlich nicht der Best-Practice-Ansatz.
const web3 = new Web3(new Web3.providers.WebsocketProvider(networkUri));
setInterval(() => {
console.log('Check WS status');
let subscription;
new Promise((resolve, reject) => {
subscription = web3.eth.subscribe('pendingTransactions')
.on('data', function () {
return resolve(true);
})
.on('error', function () {
return reject(false);
});
})
.then(() => {
console.log('OK');
})
.catch(() => {
console.log('NOK');
reconnect();
})
.finally(() => {
// unsubscribes the subscription
subscription.unsubscribe(function (error, success) {
if (success)
console.log('Successfully unsubscribed!');
});
})
}, 30000);
Grüße
Anscheinend gibt es ein offenes Problem zu diesem Problem:
https://github.com/ethereum/web3.js/issues/1391
https://github.com/ethereum/web3.js/issues/1558
Wie es heißt (habe es nicht selbst getestet), gibt es ein Endereignis, das das Schließen erkennen sollte
const wes3 = new Web3(new Web3.providers.WebsocketProvider('wss://rinkeby.infura.io/ws'));
wes3._provider.on('end', (eventObj) => {
console.log('Disconnected: ');
console.log(eventObj);
});
Oktapodien