Events Package
Event Subscribers
Subscribers group multiple related listeners in a single class.
Event Subscribers
Subscribers group multiple related listeners in a single class.
Creating Subscribers
import { Subscriber } from "@lara-node/events";
@Subscriber()
class UserEventSubscriber {
async onUserRegistered(event: UserRegistered) {
await Mail.to(event.user.email).send(new WelcomeMail(event.user));
}
async onUserUpdated(event: UserUpdated) {
await Cache.del(`user:${event.user.id}`);
}
async onUserDeleted(event: UserDeleted) {
await Cache.del(`user:${event.user.id}`);
}
}
Subscribing
import { EventDispatcher } from "@lara-node/events";
const dispatcher = new EventDispatcher();
dispatcher.subscribe(UserEventSubscriber);
Event Method Naming
Methods follow the pattern on<EventName>:
onUserRegistered(event: UserRegistered)
onUserUpdated(event: UserUpdated)
onUserDeleted(event: UserDeleted)
Complete Example
@Subscriber()
class OrderEventSubscriber {
async onOrderCreated(event: OrderCreated) {
await Mail.to(event.order.user.email).send(new OrderConfirmationMail(event.order));
}
async onOrderPaid(event: OrderPaid) {
await event.order.update({ status: "paid" });
}
async onOrderShipped(event: OrderShipped) {
await Notification.send(event.order.user, "Your order has been shipped!");
}
async onOrderCancelled(event: OrderCancelled) {
await event.order.update({ status: "cancelled" });
}
}
Next Steps
- Listeners -- Event listeners
- Queueable Listeners -- Queue-backed listeners
- Broadcasting -- WebSocket broadcasting