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  ```