agent-prototype
v2.0.6
Published
an extendable agent for building multi agent systems
Downloads
8
Readme
agent-prototype
an extendable agent for building multi agent systems in javascript using prototypal inheritance.
methods
you must provide an event emitter via the constructor which is used as a global communication bus between agents.
listen(handler)
listen for messages on the bus (event emitter), accepts a function handler.
shout(message)
send a message to the communication bus, message can be an object or string.
spawn(bus)
spawn a new agent, optionally provide a communication bus (event emitter).
messages
Internally the agent uses the event emitter... with the following convention. To send a
message from the outside just make sure to emit to the message
channel and use the
sender property to let others know who you are!
bus.emit('message', {
sender: 'custom',
message: 'hello from example!'
})
bus.on('message', console.log) // hear *ALL* messages in the system
example
var EventEmitter = require('events').EventEmitter
var bus = new EventEmitter()
var agentPrototype = require('agent-prototype')
var a = new agentPrototype(bus)
var b = new agentPrototype(bus)
a.listen(console.log)
b.listen(console.log)
setInterval(function () {
var number = Math.round(Math.random()*11)
bus.emit('message', { message: number, sender: 'environment' })
}, 1300)
extending example
This example shows how to add custom methods and extend the prototype.
var agentPrototype = require('agent-prototype')
var EventEmitter = require('events').EventEmitter
var bus = new EventEmitter()
var a = new agentPrototype (bus)
agentPrototype.prototype.custom = function () {
return Math.random()
}
a.listen(function (data) {
console.log('.', data.message)
if (Math.random()>0.9) a.shout('hello world! from '+a.id)
})
setInterval(function () {
bus.emit('message', {
message: Math.random(),
sender: 'environment'
})
console.log('..', a.custom())
}, 120)
bus.on('message', console.log)
topics
- actors
- multi agent systems
installation
npm i agent-prototype