Add Nuxt MiniMax H3 relay studio for local ComfyUI.
Headless image-to-video UI queues jobs on the desktop ComfyUI instance with live SSE progress and Authentik SSO.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
export default defineEventHandler(async (event) => {
|
||||
const id = getRouterParam(event, 'id')
|
||||
const job = id ? getJob(id) : undefined
|
||||
if (!job) {
|
||||
throw createError({ statusCode: 404, statusMessage: 'Job not found' })
|
||||
}
|
||||
|
||||
const stream = createEventStream(event)
|
||||
const send = async (payload: unknown) => {
|
||||
await stream.push(JSON.stringify(payload))
|
||||
}
|
||||
|
||||
await send({
|
||||
type: 'hello',
|
||||
status: job.status,
|
||||
message: job.message,
|
||||
progress: job.progress,
|
||||
step: job.step,
|
||||
maxStep: job.maxStep,
|
||||
promptId: job.promptId,
|
||||
elapsedMs: Date.now() - job.startedAt
|
||||
})
|
||||
|
||||
for (const past of job.events) {
|
||||
await send(past)
|
||||
}
|
||||
|
||||
const unsubscribe = subscribeJob(job, (payload) => {
|
||||
void send(payload).then(() => {
|
||||
if (payload.type === 'complete' || payload.type === 'error') {
|
||||
void stream.close()
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
stream.onClosed(() => {
|
||||
unsubscribe()
|
||||
})
|
||||
|
||||
return stream.send()
|
||||
})
|
||||
Reference in New Issue
Block a user