first commit
This commit is contained in:
commit
69b647145f
58 files changed
+15796
No files matched your search
@@ -0,0 +1,36 @@
|
||||
export interface RoomPublic {
|
||||
id: string
|
||||
name: string
|
||||
createdAt?: string
|
||||
memberCount?: number
|
||||
streamCount?: number
|
||||
}
|
||||
|
||||
export interface RoomAdmin extends RoomPublic {
|
||||
pwdVersion: number
|
||||
createdBy: string
|
||||
}
|
||||
|
||||
export interface Participant {
|
||||
clientId: string
|
||||
nickname: string
|
||||
joinedAt: number
|
||||
isStreaming: boolean
|
||||
}
|
||||
|
||||
export interface ActiveStream {
|
||||
streamId: string
|
||||
broadcasterId: string
|
||||
broadcasterNickname: string
|
||||
startedAt: number
|
||||
}
|
||||
|
||||
/** viewerClientId -> Set of streamIds (serialized as Record) */
|
||||
export type WatchMap = Record<string, string[]>
|
||||
|
||||
export interface RoomState {
|
||||
roomId: string
|
||||
participants: Participant[]
|
||||
activeStreams: ActiveStream[]
|
||||
watchMap: WatchMap
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
export interface JoinPayload {
|
||||
roomId: string
|
||||
clientId: string
|
||||
nickname: string
|
||||
accessToken: string
|
||||
}
|
||||
|
||||
export interface StreamStartPayload {
|
||||
streamId: string
|
||||
}
|
||||
|
||||
export interface StreamStopPayload {
|
||||
streamId: string
|
||||
}
|
||||
|
||||
export interface WatchPayload {
|
||||
streamId: string
|
||||
broadcasterId: string
|
||||
}
|
||||
|
||||
export interface SignalPayload {
|
||||
to: string
|
||||
from?: string
|
||||
streamId: string
|
||||
sdp?: RTCSessionDescriptionInit
|
||||
candidate?: RTCIceCandidateInit
|
||||
}
|
||||
|
||||
export type ClientToServerEvents = {
|
||||
'room:join': (payload: JoinPayload, ack?: (res: { ok: boolean; error?: string }) => void) => void
|
||||
'room:leave': () => void
|
||||
'stream:start': (payload: StreamStartPayload, ack?: (res: { ok: boolean; error?: string }) => void) => void
|
||||
'stream:stop': (payload: StreamStopPayload) => void
|
||||
'watch:start': (payload: WatchPayload) => void
|
||||
'watch:stop': (payload: WatchPayload) => void
|
||||
'webrtc:offer': (payload: SignalPayload) => void
|
||||
'webrtc:answer': (payload: SignalPayload) => void
|
||||
'webrtc:ice': (payload: SignalPayload) => void
|
||||
}
|
||||
|
||||
export type ServerToClientEvents = {
|
||||
'room:state': (state: import('./room').RoomState) => void
|
||||
'room:force-close': (payload: { reason: string }) => void
|
||||
'room:error': (payload: { error: string }) => void
|
||||
'webrtc:offer': (payload: SignalPayload) => void
|
||||
'webrtc:answer': (payload: SignalPayload) => void
|
||||
'webrtc:ice': (payload: SignalPayload) => void
|
||||
'peer:left': (payload: { clientId: string }) => void
|
||||
}
|
||||
Reference in new issue
Block a user