Event Publisher/Emitter
Event Publisher provides an idiomatic asynchronous event-driven architecture that able to Publish asynchronous and synchronous events. Subscribe and Unsubscribe to those events.
aah Server events built around this Event Publisher.
On each named event you can attach one or more callbacks to it. The callback have to be compliant with aah.EventCallback
or callback func is aah.EventCallbackFunc
.
Table of Contents
- Event Structure
- Subscribe to the Event
- Unsubscribe from the Event
- Publish Event Asynchronously
- Publish Event Synchronously
Event Structure
// Event type holds the details of single event.
Event struct {
Name string
Data interface{}
}
Subscribe to the Event
// compliant with aah.EventCallbackFunc
func productUpdated(e *aah.Event) {
// logic goes here
}
subscribe := &EventCallback{
Callback: productUpdated,
CallOnce: false, // always called when event is published
}
aah.App().SubscribeEvent("ProductUpdated", subscribe)
// OR
// subscribe using callback func
aah.App().SubscribeEventFunc("ProductUpdated", productUpdated)
Unsubscribe from the Event
// compliant with aah.EventCallbackFunc
func productUpdated(e *aah.Event) {
// logic goes here
}
subscribe := EventCallback{Callback: productUpdated}
// you have subscribe it before
aah.App().UnsubscribeEvent("ProductUpdated", subscribe)
// OR
// unsubscribe by callback func
aah.App().UnsubscribeEventFunc("ProductUpdated", productUpdated)
Publish Event Asynchronously
aah.App().PublishEvent("UserEdited", data)
Publish Event Synchronously
aah.App().PublishEventSync("UserEdited", data)