mcp-hub-002: WebSocket backend registration and health tracking
This commit is contained in:
parent
60d92af13b
commit
a93bcfffa7
4 changed files with 138 additions and 2 deletions
47
src/backend-registry.js
Normal file
47
src/backend-registry.js
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
class BackendRegistry {
|
||||
constructor() {
|
||||
this.backends = new Map();
|
||||
}
|
||||
|
||||
register(serviceId, ws) {
|
||||
this.backends.set(serviceId, {
|
||||
ws,
|
||||
connectedAt: new Date().toISOString(),
|
||||
lastPing: null,
|
||||
});
|
||||
console.log(`[registry] registered backend: ${serviceId}`);
|
||||
}
|
||||
|
||||
unregister(serviceId) {
|
||||
if (this.backends.has(serviceId)) {
|
||||
this.backends.delete(serviceId);
|
||||
console.log(`[registry] unregistered backend: ${serviceId}`);
|
||||
}
|
||||
}
|
||||
|
||||
get(serviceId) {
|
||||
const entry = this.backends.get(serviceId);
|
||||
return entry ? entry.ws : null;
|
||||
}
|
||||
|
||||
list() {
|
||||
return Array.from(this.backends.entries()).map(([serviceId, entry]) => ({
|
||||
serviceId,
|
||||
connectedAt: entry.connectedAt,
|
||||
lastPing: entry.lastPing,
|
||||
}));
|
||||
}
|
||||
|
||||
updatePing(serviceId) {
|
||||
const entry = this.backends.get(serviceId);
|
||||
if (entry) {
|
||||
entry.lastPing = new Date().toISOString();
|
||||
}
|
||||
}
|
||||
|
||||
count() {
|
||||
return this.backends.size;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new BackendRegistry();
|
||||
Loading…
Add table
Add a link
Reference in a new issue