An easy events bus with advance features.
npm i @apio/bussy
Generic events emitter. Support topic wildcards.
import Bussy from '@apio/bussy'
const events = Bussy.createEventBus()
events.on('test.*', (event, data) => {
console.log(`New event: ${event}: ${data}`)
// New event: test.a: sample data
})
events.emit('test.a', 'sample data')
Typed data bus.
import Bussy from '@apio/bussy'
type User = {
username: string
password: string
}
const dataBus = Bussy.createDataBus<User>()
dataBus.listen((user: User) => {
console.log(user.username, user.password)
})
dataBus.publish({
username: 'username',
password: 'password'
})
Events bus implementing Request/Reply
pattern.
import Bussy from '@apio/bussy'
const request = Bussy.createRequestBus<string, number>()
request.listen((data, reply) => {
const len = data.length
reply(len)
})
request.create('Messaggio', (res, err) => {
if (err) {
console.error(err)
} else {
console.log(res)
}
})
// Or with a Promise version
try {
const res = await request.createAsync('Messaggio async')
console.log(res)
} catch (e) {
console.error(e)
}
- Implements timeout feature in
Request/Reply
pattern.