Files
peardata/server/core/peer-registry.js
T
Raven Scott 015d92a257
Release rolling / release (push) Has been cancelled
CI / test (push) Has been cancelled
first commit
2026-07-18 16:17:38 -04:00

48 lines
806 B
JavaScript

/**
* Live connected peer sessions.
*/
/** @type {Map<string, import('../rpc/session.js').PeerSession>} */
const byId = new Map()
export const peers = {
/**
* @param {import('../rpc/session.js').PeerSession} session
*/
add(session) {
byId.set(session.id, session)
},
/**
* @param {string} id
*/
remove(id) {
byId.delete(id)
},
/**
* @param {string} id
*/
get(id) {
return byId.get(id) || null
},
list() {
return [...byId.values()]
},
size() {
return byId.size
},
/**
* Push event to every connected peer.
* @param {string} event
* @param {unknown} payload
*/
broadcast(event, payload) {
for (const s of byId.values()) {
try {
s.push(event, payload)
} catch {
// ignore
}
}
},
}