SrGooglo a478432d61 Implement music sync room and refine related features
- Add WebSocket-based sync room for real-time music playback sync.
- Expand music exploration search to include albums and artists.
- Adjust track and release data fetching and deletion on server.
- Enhance DASH segmentation job with codec overrides and MPD updates.
- Update music service configuration for websockets and middlewares.
- Make minor UI adjustments to the search component.
2025-05-21 19:04:59 +00:00

36 lines
610 B
JavaScript

export class SyncRoom {
constructor(ownerSocket) {
this.ownerSocket = ownerSocket
}
id = global.nanoid()
buffer = new Set()
members = new Set()
push = async (data) => {
if (this.buffer.size > 5) {
this.buffer.delete(this.buffer.keys().next().value)
}
this.buffer.add(data)
for (const socket of this.members) {
socket.emit(`syncroom:push`, data)
}
}
join = (socket) => {
this.members.add(socket)
// send the latest buffer
socket.emit("syncroom.buffer", this.buffer[0])
}
leave = (socket) => {
this.members.delete(socket)
}
}
export default class SyncRoomManager {}