HH-564: harden durable realtime publish boundaries (#139)

* fix(HH-564): harden durable realtime enqueue

* fix(HH-564): wire production SSE stream

---------

Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
Rogee
2026-08-23 23:38:00 +08:00
committed by GitHub
co-authored by rogee
parent cb0b554e94
commit f36606a4f2
14 changed files with 423 additions and 12 deletions
+14 -1
View File
@@ -339,6 +339,8 @@ func TestDurableWidgetRetryDoesNotDuplicateRealHubSubscribers(t *testing.T) {
visitor.PubsubToken = "visitor"
visitor.Identifier = `{"channel":"RoomChannel","pubsub_token":"visitor"}`
hub.Register(visitor)
sse := wspkg.NewSSERegistry()
dashboardSSE := sse.Subscribe("dashboard", 1, 1)
relay := wspkg.NewBroadcastRelay(rdb, hub)
ctx, cancel := context.WithCancel(context.Background())
@@ -348,7 +350,7 @@ func TestDurableWidgetRetryDoesNotDuplicateRealHubSubscribers(t *testing.T) {
require.NoError(t, relay.Stop())
})
pool := worker.NewWorkerPoolWithOptions(db, worker.WithBackoff(func(int) time.Duration { return 0 }))
publisher := wspkg.NewEventPublisher(hub, nil, relay)
publisher := wspkg.NewEventPublisher(hub, sse, relay)
publisher.SetWorkerPool(pool)
require.NoError(t, publisher.PublishWidgetEvent(1, "visitor", wspkg.EventMessageCreated, map[string]any{"id": 7}))
@@ -360,6 +362,12 @@ func TestDurableWidgetRetryDoesNotDuplicateRealHubSubscribers(t *testing.T) {
case <-time.After(time.Second):
t.Fatal("account subscriber did not receive message.created")
}
select {
case event := <-dashboardSSE.Events:
require.Equal(t, wspkg.EventMessageCreated, event.Type)
case <-time.After(time.Second):
t.Fatal("SSE subscriber did not receive message.created")
}
processed, err = pool.ProcessOne(context.Background())
require.True(t, processed)
@@ -385,6 +393,11 @@ func TestDurableWidgetRetryDoesNotDuplicateRealHubSubscribers(t *testing.T) {
default:
}
select {
case <-dashboardSSE.Events:
t.Fatal("SSE subscriber received duplicate message.created")
default:
}
select {
case <-visitor.Send:
t.Fatal("token subscriber received duplicate message.created")
default: