mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 02:24:16 +00:00
- 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.
36 lines
610 B
JavaScript
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 {}
|