@pryv/socket.io
Version:
Extends `pryv` with Socket.IO transport
108 lines (73 loc) • 3.32 kB
Markdown
Extends the [Pryv JavaScript library](https://github.com/pryv/lib-js) with Socket.IO transport and notifications.
The add-on extends `pryv.Connection` instances with a `socket` property.
`npm install --save pryv @pryv/socket.io`, then in your code (the add-on must be loaded **once only**):
```js
const pryv = require('pryv');
require('@pryv/socket.io')(pryv);
```
`pryv-socket.io.js` must be loaded **after** `pryv.js`:
```html
<script src="https://api.pryv.com/lib-js/pryv.js"></script>
<script src="https://api.pryv.com/lib-js/pryv-socket.io.js"></script>
```
Other distributions available:
- ES6 version: `https://api.pryv.com/lib-js-socket.io/pryv-socket.io-es6.js`
- `pryv` library bundled with Socket.IO and Monitor add-ons: `https://api.pryv.com/lib-js/pryv-socket.io-monitor.js`.
Once the add-on is loaded, `pryv.Connection` instances expose the `socket` property.
- `connection.socket.open()` (asynchronous) opens the Socket.IO connection. It throws errors on failure.
- `connection.socket.api()` is identical to `Connection.api()` but using the Socket.IO transport (see the [library README](https://github.com/pryv/lib-js#api-calls))
- `connection.socket.on({event-name}, callback)` registers an event listener. Possible event names are:
- `eventsChanged`: when one or multiples events are deleted, changed or added.
- `streamsChanged`: when one or multiples streams are deleted, changed or added.
- `accessChanged`: when an access is deleted or added.
- `error`: on error. The callback will receive the error as first argument.
### Examples
#### Node.js
```js
const pryv = require('pryv');
require('@pryv/socket.io')(pryv);
const apiEndpoint = 'https://{token}@my-computer.backloop.dev:4443/{username}/';
(async () => {
const conn = new pryv.Connection(apiEndpoint);
try {
await conn.socket.open();
conn.socket.on('eventsChanged', async () => {
const res = await conn.socket.api([{method: 'events.get', params: {limit: 2}}]);
console.log('Last 2 events: ', JSON.stringify(res, null, 2));
});
} catch (e) {
console.log('An error occured: ', e.message);
}
})();
```
```html
<script src="https://api.pryv.com/lib-js/pryv.js"></script>
<script src="https://api.pryv.com/lib-js-socket.io/pryv-socket.io.js"></script>
<script>
const apiEndpoint = 'https://{token}@my-computer.backloop.dev:4443/{username}/';
(async function () {
try {
await conn.socket.open();
conn.socket.on('eventsChanged', async () => {
const res = await conn.socket.api([{method: 'events.get', params: {limit: 2}}]);
console.log('Last 2 events: ', JSON.stringify(res, null, 2));
});
} catch (e) {
console.log('An error occured: ', e.message);
}
})();
</script>
```
See [here](../../examples/socket.io.html) for a simple app that allows to log in a Pryv.io platform, register to monitor events changes and create notes. You can try it running [there](https://api.pryv.com/lib-js/examples/socket.io.html).
See the [Pryv JavaScript library README](https://github.com/pryv/lib-js#contributing)
[](https://github.com/pryv/lib-js/blob/master/LICENSE)