


happner-client
The client for happner-2 and happner cluster services.
npm install happner-client
Usage
Create client instance.
var HappnerClient = require('happner-client');
var client = new HappnerClient({
requestTimeout: 10 * 1000,
responseTimeout: 20 * 1000,
logger: null
});
Connect
var optionalInfo = {
}
client.connect(
{
host: 'localhost',
port: 55000
},
{
protocol: 'https',
username: '_ADMIN',
password: 'happn',
allowSelfSignedCerts: true,
info: {}
}
).then(...).catch(...);
client.connect(null, {username: '_ADMIN', password: 'happn'}, function (e) {
})
Note: The connect()
function accepts the same arguments as the Happn.client.create() function and can therefore accept a list or range of redundant connections.
client.connect([
{host: '10.0.0.1'},
{host: '10.0.0.3'},
{host: '10.0.0.8'}
], {
username: '_ADMIN',
password: 'happn',
}).then(...
Events
client.on('connected', function () {
});
client.on('reconnected', function () {
});
client.on('disconnected', function () {
});
client.on('reconnecting', function () {
});
client.on('error', function (e) {
});
Construct your API
var kitchenModel = {
fridge: {
version: '^1.0.0',
methods: {
getTemperature: {
params: [
{name: 'shelves', type: 'array'}
]
}
}
}
};
var kitchen = client.construct(kitchenModel);
Use API functions
kitchen.exchange.fridge.getTemperature(['top', 'middle'], function (e, temps) {});
kitchen.exchange.fridge.getTemperature(['top', 'middle'])
.then(function (temps) {})
.catch(function (e) {})
Listen to API events
kitchen.event.fridge.on('/eventName', function (data) {});
Browser usage
Assuming served from happner-2 packaged /api/client
script
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="/api/client"></script>
</head>
<body>
<script>
var client = new Happner.HappnerClient({
requestTimeout: 10 * 1000,
responseTimeout: 20 * 1000
});
var model = {
'component': {
version: '^2.0.0',
methods: {
method1: {}
}
}
};
var api = client.construct(model);
client.connect()
.then(function () {
api.event.component.on('test/event', function (data, meta) {
console.log('EVENT', meta.path);
});
})
.catch(function (error) {
console.error('connection error', error);
});
setInterval(function () {
api.exchange.component.method1()
.then(function (reply) {
console.log('REPLY', reply);
})
.catch(function (error) {
console.error('ERROR', error);
});
}, 1000);
</script>
</body>
</html>