viewer playback speed
All checks were successful
CI / checks (push) Successful in 1m7s

This commit is contained in:
Robin Appelman 2025-06-22 23:26:32 +02:00
commit 5ed8dea705
4 changed files with 78 additions and 4 deletions

View file

@ -47,6 +47,11 @@ export class Session {
session: this.sessionName,
play: this.initialState.playing
}));
this.socket.send(JSON.stringify({
type: 'speed',
session: this.sessionName,
speed: this.initialState.speed
}));
this.initialState = null;
}
this.socket.onmessage = (event) => {
@ -69,6 +74,11 @@ export class Session {
tick: packet.tick
});
}
if (packet.type === 'speed') {
this.onState({
speed: packet.speed
});
}
if (packet.type === 'play') {
if (packet.play) {
this.onState({
@ -114,6 +124,13 @@ export class Session {
play: update["playing"]
}));
}
if (update.hasOwnProperty("speed")) {
this.socket.send(JSON.stringify({
type: 'speed',
session: this.sessionName,
speed: update["speed"]
}));
}
}
}
}
@ -132,6 +149,7 @@ export interface PlaybackState {
tick: number,
playing: boolean,
clients: number,
speed: number,
}
export type StateUpdate = Partial<PlaybackState>;
@ -152,6 +170,12 @@ export interface TickPacket {
tick: number;
}
export interface SpeedPacket {
type: 'speed';
session: string;
speed: number;
}
export interface PlayPacket {
type: 'play';
session: string;
@ -164,4 +188,4 @@ export interface ClientsPacket {
count: number;
}
export type Packet = JoinPacket | CreatePacket | TickPacket | PlayPacket | ClientsPacket;
export type Packet = JoinPacket | CreatePacket | TickPacket | PlayPacket | ClientsPacket | SpeedPacket;