expose subscriptions from relay and keep that updated.

This commit is contained in:
fiatjaf
2023-05-30 14:55:44 -03:00
parent 0f7a3f01f2
commit a2941876e3
2 changed files with 11 additions and 7 deletions

View File

@@ -47,10 +47,12 @@ func (sub *Subscription) Unsub() {
sub.mutex.Lock()
defer sub.mutex.Unlock()
closeMsg := CloseEnvelope(sub.GetID())
id := sub.GetID()
closeMsg := CloseEnvelope(id)
closeb, _ := (&closeMsg).MarshalJSON()
debugLog("{%s} sending %v", sub.Relay.URL, closeb)
sub.conn.WriteMessage(closeb)
sub.Relay.Subscriptions.Delete(id)
if sub.stopped == false && sub.Events != nil {
close(sub.Events)
@@ -59,6 +61,7 @@ func (sub *Subscription) Unsub() {
}
// Sub sets sub.Filters and then calls sub.Fire(ctx).
// The subscription will be closed if the context expires.
func (sub *Subscription) Sub(ctx context.Context, filters Filters) {
sub.Filters = filters
sub.Fire()
@@ -66,9 +69,10 @@ func (sub *Subscription) Sub(ctx context.Context, filters Filters) {
// Fire sends the "REQ" command to the relay.
func (sub *Subscription) Fire() error {
sub.Relay.subscriptions.Store(sub.GetID(), sub)
id := sub.GetID()
sub.Relay.Subscriptions.Store(id, sub)
reqb, _ := ReqEnvelope{sub.GetID(), sub.Filters}.MarshalJSON()
reqb, _ := ReqEnvelope{id, sub.Filters}.MarshalJSON()
debugLog("{%s} sending %v", sub.Relay.URL, reqb)
err := sub.conn.WriteMessage(reqb)
if err != nil {