Ramble-FE / services / signaling / signaling.types.ts
signaling.types.ts
Raw
export const SignalType = {
    OFFER: "OFFER",
    ANSWER: "ANSWER",
    CANDIDATE: "CANDIDATE",
} as const;

export const Topic = {
    MATCHING: "/user/queue/match",
    SIGNALING: "/user/queue/signal",
} as const;

export const Destination = {
    MATCHING: "/app/match/request",
    SIGNALING: "/app/match/signaling",
    CANCEL: "/app/match/cancel",
} as const;

export type SignalType = (typeof SignalType)[keyof typeof SignalType];
export type Topic = (typeof Topic)[keyof typeof Topic];
export type Destination = (typeof Destination)[keyof typeof Destination];

export interface SignalMessage {
    type: SignalType;
    senderId: string;
    data: RTCSessionDescriptionInit | RTCIceCandidateInit;
}

export interface Subscription {
    unsubscribe: () => void;
}

export interface SignalingEventMap {
    'signaling:connected': () => void;
    'signaling:disconnected': () => void;
    'signaling:error': (error: Error) => void;
    'message': (channel: Topic, payload: any) => void;
}