|
16 | 16 | go get -v github.com/lxzan/event_emitter@latest
|
17 | 17 | ```
|
18 | 18 |
|
19 |
| -### Usage |
| 19 | +### Quick Start |
20 | 20 |
|
21 | 21 | ```go
|
22 | 22 | package main
|
23 | 23 |
|
24 | 24 | import (
|
25 |
| - "context" |
26 | 25 | "fmt"
|
27 | 26 | "github.com/lxzan/event_emitter"
|
28 |
| - "time" |
29 | 27 | )
|
30 | 28 |
|
31 | 29 | func main() {
|
32 |
| - var em = event_emitter.New(&event_emitter.Config{ |
33 |
| - BucketNum: 16, |
34 |
| - BucketCap: 128, |
35 |
| - Concurrency: 8, |
| 30 | + var em = event_emitter.New[event_emitter.Int64Subscriber](&event_emitter.Config{ |
| 31 | + BucketNum: 16, |
| 32 | + BucketSize: 128, |
36 | 33 | })
|
37 |
| - em.Subscribe(em.NewSubscriber(), "greet", func(msg any) { |
38 |
| - fmt.Printf("recv: %v\n", msg) |
| 34 | + |
| 35 | + var suber1 = em.NewSubscriber() |
| 36 | + em.Subscribe(suber1, "greet", func(subscriber event_emitter.Int64Subscriber, msg any) { |
| 37 | + fmt.Printf("recv: sub_id=%d, msg=%v\n", subscriber.GetSubscriberID(), msg) |
| 38 | + }) |
| 39 | + em.Subscribe(suber1, "greet1", func(subscriber event_emitter.Int64Subscriber, msg any) { |
| 40 | + fmt.Printf("recv: sub_id=%d, msg=%v\n", subscriber.GetSubscriberID(), msg) |
39 | 41 | })
|
40 |
| - em.Subscribe(em.NewSubscriber(), "greet", func(msg any) { |
41 |
| - fmt.Printf("recv: %v\n", msg) |
| 42 | + |
| 43 | + var suber2 = em.NewSubscriber() |
| 44 | + em.Subscribe(suber2, "greet1", func(subscriber event_emitter.Int64Subscriber, msg any) { |
| 45 | + fmt.Printf("recv: sub_id=%d, msg=%v\n", subscriber.GetSubscriberID(), msg) |
42 | 46 | })
|
43 |
| - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) |
44 |
| - defer cancel() |
45 |
| - _ = em.Publish(ctx, "greet", "hello!") |
46 |
| - time.Sleep(time.Second) |
| 47 | + |
| 48 | + em.Publish("greet1", "hello!") |
| 49 | +} |
| 50 | +``` |
| 51 | + |
| 52 | +### GWS Broadcast |
| 53 | + |
| 54 | +```go |
| 55 | +package main |
| 56 | + |
| 57 | +import ( |
| 58 | + "github.com/lxzan/event_emitter" |
| 59 | + "github.com/lxzan/gws" |
| 60 | +) |
| 61 | + |
| 62 | +type Socket struct{ *gws.Conn } |
| 63 | + |
| 64 | +func (c *Socket) GetSubscriberID() int64 { |
| 65 | + userId, _ := c.Session().Load("userId") |
| 66 | + return userId.(int64) |
| 67 | +} |
| 68 | + |
| 69 | +func Sub(em *event_emitter.EventEmitter[*Socket], topic string, socket *Socket) { |
| 70 | + em.Subscribe(socket, topic, func(subscriber *Socket, msg any) { |
| 71 | + _ = msg.(*gws.Broadcaster).Broadcast(subscriber.Conn) |
| 72 | + }) |
| 73 | +} |
| 74 | + |
| 75 | +func Pub(em *event_emitter.EventEmitter[*Socket], topic string, op gws.Opcode, msg []byte) { |
| 76 | + var broadcaster = gws.NewBroadcaster(op, msg) |
| 77 | + defer broadcaster.Close() |
| 78 | + em.Publish(topic, broadcaster) |
47 | 79 | }
|
48 | 80 | ```
|
0 commit comments