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 }) { .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 { // get initial state
const iterator = createEventIterator<PlayerState>( const initialState = await redis.get(PLAYER_STATE_KEY(input.userId))
globalEmitter, if (initialState) {
`state-change:${input.userId}`, yield tracked('initial', JSON.parse(initialState) as PlayerState)
{ signal: signal } }
)
console.log('iterator created') // listen for updates
for await (const [state] of iterator) {
for await (const [state] of iterator) { yield tracked(Date.now().toString(), state)
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)
} }
}), }),
}) })