Update server/status.js

Add Fulcrum query diagnostics
This commit is contained in:
2026-08-28 16:04:38 +00:00
parent 553b54d133
commit c8529489a1
+51 -10
View File
@@ -10,6 +10,7 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
resolve({ resolve({
ok: false, ok: false,
result: null, result: null,
error: 'Fulcrum URL is not configured',
}); });
return; return;
} }
@@ -22,6 +23,7 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
resolve({ resolve({
ok: false, ok: false,
result: null, result: null,
error: 'Invalid Fulcrum URL',
}); });
return; return;
} }
@@ -30,6 +32,7 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
resolve({ resolve({
ok: false, ok: false,
result: null, result: null,
error: 'Fulcrum URL must use tcp://',
}); });
return; return;
} }
@@ -41,6 +44,7 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
resolve({ resolve({
ok: false, ok: false,
result: null, result: null,
error: 'Fulcrum URL is missing host or port',
}); });
return; return;
} }
@@ -64,18 +68,28 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
socket.setTimeout(fulcrumTimeoutMs); socket.setTimeout(fulcrumTimeoutMs);
socket.on('connect', () => { socket.on('connect', () => {
socket.write( console.log(
JSON.stringify({ `Fulcrum connected for ${method} (${host}:${fulcrumPort})`,
jsonrpc: '2.0',
id: 1,
method,
params,
}) + '\n',
); );
const request = JSON.stringify({
jsonrpc: '2.0',
id: 1,
method,
params,
}) + '\n';
console.log(`Sending Fulcrum request: ${request.trim()}`);
socket.write(request);
}); });
socket.on('data', (data) => { socket.on('data', (data) => {
response += data.toString(); const chunk = data.toString();
console.log(`Fulcrum response data: ${chunk.trim()}`);
response += chunk;
const lines = response.split('\n'); const lines = response.split('\n');
@@ -91,10 +105,17 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
} }
if (message.error) { if (message.error) {
console.error(
`Fulcrum returned an error for ${method}:`,
JSON.stringify(message.error),
);
finish({ finish({
ok: false, ok: false,
result: null, result: null,
error: message.error,
}); });
return; return;
} }
@@ -102,30 +123,48 @@ function queryFulcrum(fulcrumUrl, method, params = []) {
finish({ finish({
ok: true, ok: true,
result: message.result, result: message.result,
error: null,
}); });
return; return;
} }
} }
}); });
socket.on('timeout', () => { socket.on('timeout', () => {
console.error(
`Fulcrum request timed out after ${fulcrumTimeoutMs}ms: ${method}`,
);
finish({ finish({
ok: false, ok: false,
result: null, result: null,
error: 'Connection timed out',
}); });
}); });
socket.on('error', () => { socket.on('error', (error) => {
console.error(
`Fulcrum socket error for ${method}:`,
error.message,
);
finish({ finish({
ok: false, ok: false,
result: null, result: null,
error: error.message,
}); });
}); });
socket.on('close', () => { socket.on('close', (hadError) => {
console.log(
`Fulcrum socket closed for ${method}; hadError=${hadError}`,
);
finish({ finish({
ok: false, ok: false,
result: null, result: null,
error: 'Connection closed before a response was received',
}); });
}); });
}); });
@@ -145,6 +184,7 @@ async function getFulcrumStatus(fulcrumUrl) {
url: fulcrumUrl, url: fulcrumUrl,
serverVersion: null, serverVersion: null,
blockchainHeight: null, blockchainHeight: null,
error: version.error,
}; };
} }
@@ -163,6 +203,7 @@ async function getFulcrumStatus(fulcrumUrl) {
headers.ok && headers.result headers.ok && headers.result
? headers.result.height ?? null ? headers.result.height ?? null
: null, : null,
error: headers.ok ? null : headers.error,
}; };
} }