Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/teamwork/node-afk
Away from keyboard!
https://github.com/teamwork/node-afk
Last synced: 3 days ago
JSON representation
Away from keyboard!
- Host: GitHub
- URL: https://github.com/teamwork/node-afk
- Owner: Teamwork
- License: mit
- Created: 2014-02-21T14:26:57.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2018-09-06T17:48:08.000Z (about 6 years ago)
- Last Synced: 2024-10-01T23:07:50.922Z (about 1 month ago)
- Language: JavaScript
- Homepage: https://www.npmjs.org/package/afk
- Size: 1.07 MB
- Stars: 32
- Watchers: 68
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# node-afk
Trigger an action when the activity status of the user changes.
## Prerequisites
- Node.js >= 8.0.0
## Installation
```sh
npm install afk
```This module uses a native module that needs to be built using `node-gyp`.
On linux you will need to install `libxss-dev` and `pkg-config` to ensure that the native module dependency can be built.
## Usage
```js
const NodeAFK = require('afk');const inactivityDuration = 1000 * 10; // the user will be considered `idle` after 10 seconds
const afk = new NodeAFK(inactivityDuration);
afk.init();
afk.on('status:idle', () => {
// the status of the user changed from `active` to `idle`
});afk.on('status:active', () => {
// the status of the user changed from `idle` to `active`
})
````node-afk` is an event emitter and emits the following events:
- `status:idle` - the status of the user changed from `active` to `idle`
- `status:active` - the status of the user changed from `idle` to `active`
- `status-changed` - the status of the user changed. An object is passed to the listener for this event containing details of the previous and current status.
- `error` - an error occured```js
afk.on('status-changed', ({ previousStatus, currentStatus }) => {
// `previousStatus` is the status of the user before their status changed
// `currentStatus` is the status of the user after their status changed
})
```You can unregister a listener from an event using the `off` method of the event emitter:
```js
afk.off('status:idle', idleListener);
```You can also setup a listener that is executed when the status of the user has been their current status for a certain duration:
```js
afk.on('idle:5000', () => {
// the user has been `idle` for 5 seconds
});afk.on('active:15000', () => {
// the user has been `active` for 15 seconds
});
```These events will be emitted each time the status of the user is changed.
If an error occurs whilst trying to retrieve the idle time from the system an `error` event will be emitted:
```js
afk.on('error', (err) => {
// an error occurred
});
```## API
### constructor(inactivityDuration, [pollInterval])
Create a new instance of `node-afk`
- `inactivityDuration` - How long (in `ms`) until the user can be inactive until they are considered as `idle`
- `pollInterval` - How often (in `ms`) should `node-afk` query the system to get the the amount of time that the user has been away for (`1000ms` by default)### on(eventName, listener)
Register a listener on an event
- `eventName` - `status:active`, `status:idle`, `status-changed`, `:
### off(eventName, listener)
Unregister a listener from an event
- `eventName` - The name of the event
- `listener` - The listener associated with the event### init()
Initalise the `node-afk` instance.
**This is required to be called so that the poll interval is setup.**
### destroy()
Stops the poll interval and removes all event listeners.
## Contributing
Contributions are always welcome. Make sure you write tests for anything you add or change. We also enforce AirBNB ESLint rules.
## License
`MIT`