github.com/isyscore/isc-gobase@v1.5.3-0.20231218061332-cbc7451899e9/listener/README.md (about) 1 ## listener 2 listener包:是isc-gobase的事件监听模块 3 4 ### 用法 5 6 提供api 7 ```go 8 // 添加事件监听器 9 listener.AddListener(eventName string, eventListener EventListener) 10 11 // 添加分组的事件监听器,分组默认为:GobaseDefault 12 listener.AddListenerWithGroup(group string, eventName string, eventListener EventListener) 13 14 // 发布事件 15 listener.PublishEvent(event listener.BaseEvent) 16 ``` 17 18 ### 快速使用 19 #### 1. 定义事件 20 事件要实现接口 `listener.BaseEvent` 的方法 21 22 ```go 23 type Event1 struct { 24 Company string 25 } 26 27 func (e1 Event1) Name() string { 28 return "event1" 29 } 30 ``` 31 32 ```go 33 import ( 34 "fmt" 35 "github.com/isyscore/isc-gobase/listener" 36 "testing" 37 ) 38 39 func TestPublish(t *testing.T) { 40 listener.AddListener("event1", Event1Lister1) 41 listener.AddListener("event1", Event1Lister2) 42 listener.AddListener("event1", Event1Lister3) 43 44 listener.PublishEvent(Event1{Company: "公司"}) 45 } 46 47 // 事件监听器1 48 func Event1Lister1(event listener.BaseEvent) { 49 ev := event.(Event1) 50 fmt.Println("Event1Lister1: " + ev.Company) 51 } 52 53 // 事件监听器2 54 func Event1Lister2(event listener.BaseEvent) { 55 ev := event.(Event1) 56 fmt.Println("Event1Lister2: " + ev.Company) 57 } 58 59 // 事件监听器3 60 func Event1Lister3(event listener.BaseEvent) { 61 ev := event.(Event1) 62 fmt.Println("Event1Lister3: " + ev.Company) 63 } 64 ``` 65 66 ### 内置监听器 67 isc-gobase内置了几类事件 68 - EventOfServerRunStart: 服务开启运行事件 69 - EventOfServerRunFinish: 服务启动完成事件 70 - EventOfServerStop: 服务关闭事件 71 - EventOfConfigChange: 配置变更事件 72 73 74 常用示例: 75 ```go 76 func init() { 77 // 添加服务器启动完成事件监听 78 listener.AddListener(listener.EventOfServerRunFinish, func(event listener.BaseEvent) { 79 logger.Info("应用启动完成") 80 }) 81 } 82 83 func main() { 84 server.Get("api/get", GetData) 85 server.Run() 86 } 87 ```