mirror of
https://github.com/ragestudio/comty.git
synced 2025-06-09 10:34:17 +00:00
added sseevents
This commit is contained in:
parent
58d93d9f9b
commit
379838d0f7
47
packages/app/src/classes/SSEEvents/index.js
Normal file
47
packages/app/src/classes/SSEEvents/index.js
Normal file
@ -0,0 +1,47 @@
|
||||
export default class SSEEvents {
|
||||
constructor(url, events) {
|
||||
this.url = url
|
||||
|
||||
for (const [event, handler] of Object.entries(events)) {
|
||||
this.handlers.set(event, handler)
|
||||
}
|
||||
|
||||
this.eventSource = new EventSource(url)
|
||||
|
||||
this.eventSource.onmessage = (event) => {
|
||||
const parsed = JSON.parse(event.data)
|
||||
|
||||
console.debug(`[SSE] Message received`, parsed)
|
||||
|
||||
if (typeof parsed.event !== "string") {
|
||||
console.error(`[SSE] Invalid event type: ${parsed.event}`)
|
||||
return
|
||||
}
|
||||
|
||||
this.trigger(parsed.event, parsed.data)
|
||||
}
|
||||
}
|
||||
|
||||
handlers = new Map()
|
||||
|
||||
on = (event, fn) => {
|
||||
this.handlers.set(event, fn)
|
||||
}
|
||||
|
||||
off = (event) => {
|
||||
this.handlers.delete(event)
|
||||
}
|
||||
|
||||
trigger = (event, data) => {
|
||||
const handler = this.handlers.get(event)
|
||||
|
||||
if (handler) {
|
||||
handler(data)
|
||||
}
|
||||
}
|
||||
|
||||
close = () => {
|
||||
console.log(`[SSE] Closing connection`)
|
||||
this.eventSource.close()
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user