Define PubSub and Subscription interfaces in the core via package with a vianats sub-package providing the embedded NATS + JetStream implementation. Expose c.Publish() and c.Subscribe() on Context with automatic subscription cleanup on session close. Refactor the NATS chatroom example to use the built-in methods instead of manual subscription tracking.
15 lines
450 B
Go
15 lines
450 B
Go
package via
|
|
|
|
// PubSub is an interface for publish/subscribe messaging backends.
|
|
// The vianats sub-package provides an embedded NATS implementation.
|
|
type PubSub interface {
|
|
Publish(subject string, data []byte) error
|
|
Subscribe(subject string, handler func(data []byte)) (Subscription, error)
|
|
Close() error
|
|
}
|
|
|
|
// Subscription represents an active subscription that can be manually unsubscribed.
|
|
type Subscription interface {
|
|
Unsubscribe() error
|
|
}
|