refactor: remove stale hybrid routing artifacts (#89)

This commit is contained in:
AAA authored and GitHub committed 2026-08-21 01:48:29 +08:00
1 parent 7949efac2d
commit 85c3f7342f
3 files changed
+22 -36

No files matched your search

+1 -3
View File
@@ -57,6 +57,7 @@ Flagship first; parallelize design/research/code/tests/audit. Ship minimum runna
- PR #49/#50 BWE is unverified/default-off: test zero-child leaves, then root impact. No local per-leaf UDP shaper; resume with Linux `tc` or public canary, never CDP. Web P2P/SVC shortcuts remain no-go.
- The corrected standby smoke is localhost/headless/video-only; public DNS/TLS reuse, transport, audio, shaping, load, mobile, endurance, and sub-25 ms overlap remain open.
- Headful fragment-to-sessionStorage consumption, invitation rotation after migration, and request/log leak inspection remain production UX gates. Accounts stay out.
- Structure debt: split `HybridMediaRouter`, `HostPage`, `SignalingServer`, and `ViewerPage` only at proven consumer boundaries, never by file length.
## Next Milestone
@@ -80,15 +81,12 @@ ADR-0004 still requires a full-resolution 30-minute `1/3/5/8` network,
resource, quality, latency, recovery, and browser/mobile-leaf matrix. A separate
20-viewer gate must pass before the current default eight changes to target 20.
ADR-0004 remains fail-closed; Native/striping experiments cannot relabel it.
## Blockers And Decisions
ADR-0004/0005 remain No-Go for broad rollout. DNS/TLS, independent secrets,
host/provider UDP 7882 and bounded services are deployed, but real external
media/device evidence is absent. Shared IP remains smoke-only and cannot approve
clean-port migration; the full gate still needs an isolated VM/IP.
Deferred architecture audit: `docs/maintenance.md`.
- Whole-system versus selected-game audio for the first release.
- Initial deployment region and network cohort.
+21 -24
View File
@@ -458,7 +458,7 @@ export class SignalingServer {
};
let hybridState;
try {
hybridState = this.isPeerAssistedRoom(participant.roomId)
hybridState = this.isHybridMediaEnabled()
? this.hybridMediaRouter!.connectParticipant(routeParticipant)
: undefined;
} catch {
@@ -538,14 +538,14 @@ export class SignalingServer {
if (participant.role === "host") {
for (const viewer of connectedViewers) {
this.sendToSession(viewer.sessionId, { type: "host-status", online: true });
if (!this.isPeerAssistedRoom(participant.roomId)) {
if (!this.isHybridMediaEnabled()) {
this.send(socket, { type: "peer-joined", peerId: viewer.peerId });
}
}
return;
}
if (this.isPeerAssistedRoom(participant.roomId)) {
if (this.isHybridMediaEnabled()) {
return;
}
@@ -576,7 +576,7 @@ export class SignalingServer {
this.sendError(socket, "FORBIDDEN", "Only viewers may request an ICE restart");
return;
}
if (this.isPeerAssistedRoom(authenticated.roomId)) {
if (this.isHybridMediaEnabled()) {
this.routePeerAssistedRestart(socket, authenticated, message);
return;
}
@@ -593,7 +593,7 @@ export class SignalingServer {
return;
case "set-quality-settings":
if (
!this.isPeerAssistedRoom(authenticated.roomId) ||
!this.isHybridMediaEnabled() ||
authenticated.role !== "host"
) {
this.sendError(
@@ -618,7 +618,7 @@ export class SignalingServer {
return;
case "relay-capacity":
if (
!this.isPeerAssistedRoom(authenticated.roomId) ||
!this.isHybridMediaEnabled() ||
authenticated.role !== "viewer"
) {
this.sendError(
@@ -637,7 +637,7 @@ export class SignalingServer {
);
return;
case "route-ready":
if (!this.isPeerAssistedRoom(authenticated.roomId)) {
if (!this.isHybridMediaEnabled()) {
this.sendError(socket, "FORBIDDEN", "Media routes are not enabled");
return;
}
@@ -650,7 +650,7 @@ export class SignalingServer {
);
return;
case "route-failed":
if (!this.isPeerAssistedRoom(authenticated.roomId)) {
if (!this.isHybridMediaEnabled()) {
this.sendError(socket, "FORBIDDEN", "Media routes are not enabled");
return;
}
@@ -665,7 +665,7 @@ export class SignalingServer {
case "refresh-sfu":
if (
!this.options.sfuFallback ||
!this.isPeerAssistedRoom(authenticated.roomId)
!this.isHybridMediaEnabled()
) {
this.sendError(socket, "FORBIDDEN", "SFU fallback is not enabled");
return;
@@ -816,7 +816,7 @@ export class SignalingServer {
});
}
if (this.isPeerAssistedRoom(authenticated.roomId)) {
if (this.isHybridMediaEnabled()) {
for (const viewer of update.revokedViewers) {
this.hybridMediaRouter!.removeViewer(
authenticated.roomId,
@@ -918,7 +918,7 @@ export class SignalingServer {
let routeRevision = 0;
let parent: ConnectedPeer | undefined;
if (this.isPeerAssistedRoom(source.roomId)) {
if (this.isHybridMediaEnabled()) {
const edge = this.hybridMediaRouter?.resolveActivePeerEdge(
source.roomId,
source.peerId,
@@ -987,7 +987,7 @@ export class SignalingServer {
acceptedAtMs: now,
parentEvidenceAccepted: false,
});
if (this.isPeerAssistedRoom(source.roomId)) {
if (this.isHybridMediaEnabled()) {
this.hybridMediaRouter!.handleViewerQualityEvidence({
roomId: source.roomId,
viewerSessionId: viewerState.sessionId,
@@ -1005,7 +1005,7 @@ export class SignalingServer {
{ type: "parent-edge-quality-evidence" }
>,
): void {
if (!this.isPeerAssistedRoom(source.roomId)) {
if (!this.isHybridMediaEnabled()) {
return;
}
const sourceState = this.socketStates.get(socket);
@@ -1060,7 +1060,7 @@ export class SignalingServer {
source: AuthenticatedSession,
message: Extract<ClientMessage, { type: "signal" }>,
): void {
if (this.isPeerAssistedRoom(source.roomId)) {
if (this.isHybridMediaEnabled()) {
this.routePeerAssistedSignal(sourceSocket, source, message);
return;
}
@@ -1264,7 +1264,7 @@ export class SignalingServer {
if (!disconnected) {
return;
}
if (this.isPeerAssistedRoom(disconnected.roomId)) {
if (this.isHybridMediaEnabled()) {
this.hybridMediaRouter!.disconnectParticipant(
disconnected.roomId,
disconnected.peerId,
@@ -1295,7 +1295,7 @@ export class SignalingServer {
disconnected.roomId,
disconnected.peerId,
);
if (this.isPeerAssistedRoom(disconnected.roomId)) {
if (this.isHybridMediaEnabled()) {
this.hybridMediaRouter!.removeViewer(
disconnected.roomId,
disconnected.peerId,
@@ -1317,7 +1317,7 @@ export class SignalingServer {
private stopSharing(roomId: string): void {
this.clearRoomConnectionIds(roomId);
if (this.isPeerAssistedRoom(roomId)) {
if (this.isHybridMediaEnabled()) {
this.hybridMediaRouter!.stopRoom(roomId);
}
for (const viewer of this.options.roomStore.getConnectedViewers(roomId)) {
@@ -1333,7 +1333,7 @@ export class SignalingServer {
}
this.clearRoomGraceTimers(roomId);
this.clearRoomConnectionIds(roomId);
if (this.isPeerAssistedRoom(roomId)) {
if (this.isHybridMediaEnabled()) {
this.hybridMediaRouter!.deleteRoom(roomId);
}
this.qualitySettingsByRoom.delete(roomId);
@@ -1352,7 +1352,7 @@ export class SignalingServer {
for (const expired of this.options.roomStore.expireRooms(this.now())) {
this.clearRoomGraceTimers(expired.roomId);
this.clearRoomConnectionIds(expired.roomId);
if (this.isPeerAssistedRoom(expired.roomId)) {
if (this.isHybridMediaEnabled()) {
this.hybridMediaRouter!.deleteRoom(expired.roomId);
}
this.qualitySettingsByRoom.delete(expired.roomId);
@@ -1406,10 +1406,7 @@ export class SignalingServer {
}
}
private isPeerAssistedRoom(roomId: string): boolean {
// The controller owns independent per-room state; the process flag is the
// only rollout switch. Keep the room argument at call sites for clarity.
void roomId;
private isHybridMediaEnabled(): boolean {
return this.hybridMediaRouter !== undefined;
}
@@ -1487,7 +1484,7 @@ export class SignalingServer {
role: "viewer",
peerId: viewer.peerId,
displayName: viewerState.displayName,
mediaTopology: this.isPeerAssistedRoom(roomId)
mediaTopology: this.isHybridMediaEnabled()
? this.hybridMediaRouter!.getViewerMediaTopology(
roomId,
viewer.peerId,
-9
View File
@@ -114,7 +114,6 @@ export const viewerPasswordSchema = z
.min(MIN_VIEWER_PASSWORD_LENGTH)
.max(MAX_VIEWER_PASSWORD_LENGTH)
.regex(/^[\x21-\x7e]+$/);
export type ViewerPassword = z.infer<typeof viewerPasswordSchema>;
export const viewerAccessPolicySchema = z.enum([
"private-link",
@@ -150,7 +149,6 @@ export const qualityProfileIdSchema = z.enum([
"720p30",
]);
export type QualityProfileId = z.infer<typeof qualityProfileIdSchema>;
export const DEFAULT_QUALITY_PROFILE_ID: QualityProfileId = "1080p60";
export const qualityResolutionSchema = z.enum(["720p", "1080p", "1440p"]);
export type QualityResolution = z.infer<typeof qualityResolutionSchema>;
@@ -446,9 +444,6 @@ export const viewerQualityEvidenceMessageSchema = z
.refine(freezeFitsEvidenceWindow, {
message: "Viewer freeze duration exceeds its evidence window",
});
export type ViewerQualityEvidenceMessage = z.infer<
typeof viewerQualityEvidenceMessageSchema
>;
const parentEdgeQualityProofSchema = z.discriminatedUnion("kind", [
z
@@ -485,9 +480,6 @@ export const parentEdgeQualityEvidenceMessageSchema = z
proof: parentEdgeQualityProofSchema,
})
.strict();
export type ParentEdgeQualityEvidenceMessage = z.infer<
typeof parentEdgeQualityEvidenceMessageSchema
>;
const authenticateMessageSchema = z.discriminatedUnion("role", [
z
@@ -824,7 +816,6 @@ export const createRoomRequestSchema = z
hostClaimTtlSeconds: z.literal(MAX_HOST_CLAIM_TTL_SECONDS).optional(),
})
.strict();
export type CreateRoomRequest = z.infer<typeof createRoomRequestSchema>;
export function decodeClientMessage(value: string): ClientMessage {
return clientMessageSchema.parse(JSON.parse(value));