fix player state

This commit is contained in:
2025-04-24 03:01:16 +02:00
parent dcee477c69
commit a20058403f

View File

@@ -30,26 +30,21 @@ export const playerStateRouter = createTRPCRouter({
})
)
.subscription(async function* ({ input, ctx, signal }) {
console.log('subscription started for user:', input.userId)
const iterator = createEventIterator<PlayerState>(
globalEmitter,
`state-change:${input.userId}`,
{ signal: signal }
)
try {
const iterator = createEventIterator<PlayerState>(
globalEmitter,
`state-change:${input.userId}`,
{ signal: signal }
)
// get initial state
const initialState = await redis.get(PLAYER_STATE_KEY(input.userId))
if (initialState) {
yield tracked('initial', JSON.parse(initialState) as PlayerState)
}
console.log('iterator created')
for await (const [state] of iterator) {
console.log('emitting state:', state)
yield tracked(Date.now().toString(), state)
}
} catch (error) {
console.error('subscription error:', error)
throw error
} finally {
console.log('subscription ended for user:', input.userId)
// listen for updates
for await (const [state] of iterator) {
yield tracked(Date.now().toString(), state)
}
}),
})