loopback-component-primus
Primus adapter for loopback. It allows you to call loopback's remote methods via websocket.
Getting Started
npm install --save @oneflow/loopback-component-primus
Add the loopback-component-primus component to the server/component-config.json
:
"@oneflow/loopback-component-primus": {}
A small change is needed in the server/server.js
file, replace:
app.start();
with:
app.server = app.start();
Usage
Call remote methods
The primus client library is exposed at the URL http://<LOOPBACK_URL>/primus/primus.js
You will need to import it in your html:
<script type="text/javascript" src="http://<LOOPBACK_URL>/primus/primus.js"></script>
Then, in your code:
const primus = new Primus({
url: 'http://<LOOPBACK_URL>',
});
Now you will be able to call remote methods using primus.send('invoke', {...});
primus.send('invoke', {
methodString: 'color.prototype.patchAttributes',
args: {
id: 1,
data: { name: 'black' }
},
}, function (err, data) {
if (err) {
return alert('Error from server: ' + JSON.stringify(err));
}
alert('Record updated: ' + JSON.stringify(data));
});
primus.send('invoke', {
methodString: 'color.find',
args: {
filter: {
where: {
name: 'black'
}
}
},
}, function (err, data) {
if (err) return alert('Error from server: ' + JSON.stringify(err));
alert('Find results: ' + JSON.stringify(data));
});
Remote hooks
Remote hooks won't work with the primus adapter (they work only with the REST adapter).
You have to use the global remote hooks that works seamless with all adapters.
Operation hooks will work as normal.
The syntax is slighly different:
app.remotes().before('user.*', function (ctx, next) {
console.log('methodString', ctx.methodString);
next();
});
app.remotes().before('**', function (ctx, next) {
console.log('methodString', ctx.methodString);
next();
});
Spark
You can find the spark
property, in the ctx
object.