From 6452f7de093745347db461fca923c5bdeae9b829 Mon Sep 17 00:00:00 2001 From: stanstacks Date: Fri, 23 Dec 2022 10:12:22 +0800 Subject: [PATCH] problem: example is broken --- README.md | 4 ++-- example/example.go | 18 ++++++++++-------- relaypool.go | 5 ++++- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8104aaf..fb2162c 100644 --- a/README.md +++ b/README.md @@ -24,7 +24,7 @@ for notice := range pool.Notices { ### Listening for events ```go -subId, events, unsub := pool.Sub(nostr.Filters{ +subId, events, unsubscribe := pool.Sub(nostr.Filters{ { Authors: []string{"0ded86bf80c76847320b16f22b7451c08169434837a51ad5fe3b178af6c35f5d"}, Kinds: []int{nostr.KindTextNote}, // or {1} @@ -38,7 +38,7 @@ go func() { }() time.Sleep(5 * time.Second) -unsub() +unsubscribe() ``` ### Publishing an event diff --git a/example/example.go b/example/example.go index 846bdfd..502d917 100644 --- a/example/example.go +++ b/example/example.go @@ -8,7 +8,7 @@ import ( ) // some nostr relay in the wild -var relayURL = "wss://nostr-relay.wlvs.space" +var relayURL = "wss://nostr.688.org" func main() { // create key pair @@ -26,13 +26,15 @@ func main() { pool.SecretKey = &secretKey // add a nostr relay to our pool - err = pool.Add(relayURL, nostr.SimplePolicy{Read: true, Write: true}) - if err != nil { - fmt.Printf("error calling Add(): %s\n", err.Error()) - } + errchan := pool.Add(relayURL, nostr.SimplePolicy{Read: true, Write: true}) + go func() { + for err := range errchan { + fmt.Println(err.Error()) + } + }() // subscribe to relays in our pool, with filtering - sub := pool.Sub(nostr.Filters{ + _, events, unsubscribe := pool.Sub(nostr.Filters{ { Authors: []string{publicKey}, Kinds: []int{nostr.KindTextNote}, @@ -41,7 +43,7 @@ func main() { // listen for events from our subscriptions go func() { - for event := range sub.UniqueEvents { + for event := range nostr.Unique(events) { fmt.Printf("Received Event: %+v\n\n", event) } }() @@ -69,7 +71,7 @@ func main() { // after 20 seconds, unsubscribe from our pool and terminate program time.Sleep(20 * time.Second) fmt.Println("unsubscribing from nostr subscription") - sub.Unsub() + unsubscribe() } // handle events from out publish events diff --git a/relaypool.go b/relaypool.go index 5c15b2f..983e1c9 100644 --- a/relaypool.go +++ b/relaypool.go @@ -124,7 +124,10 @@ func (r *RelayPool) Remove(url string) { } } -func (r *RelayPool) Sub(filters Filters) (string, chan EventMessage, func()) { +//Sub subscribes to events matching the passed filters and returns the subscription ID, +//a channel which you should pass into Unique to get unique events, and a function which +//you should call to clean up and close your subscription so that the relay doesn't block you. +func (r *RelayPool) Sub(filters Filters) (subID string, events chan EventMessage, unsubscribe func()) { random := make([]byte, 7) rand.Read(random) id := hex.EncodeToString(random)