UNPKG

working-mpd-client

Version:
105 lines (83 loc) 2.95 kB
# WorkingMpdClient An MPD client ``` yarn add working-mpd-client ``` ## Features - `working-mpd-client` supports the command sending - `working-mpd-client` allows subscribing on the server events (i.e. status updates) - `working-mpd-client` attempts to reconnect if the connection has been interrupted ## Example ```js const mpdClient = new MpdClient({ connectOptions: { host: 'localhost', port: 6600 }, reconnectOptions: { isUse: true, reconnectDelay: 2000 } }).on('error', console.error) .on('changed', (name) => { if (name === 'playlist') printPlaylist() }) .on('ready', printPlaylist) .init() function printPlaylist() { mpdClient.sendCommand('playlist', (err, result) => { if (err) { console.error(err) } else { console.log('\nnew playlist:\n' + result) } }) } ``` ## Information events - `warn` - a channel to notify about maintainable problems. Example: a connection has been interrupted but an attempt to reconnect will be performed. Another example: a server responded with an error to a command that did not register a callback. - `error` - a channel to notify about critical problems. Example: a connection has been interrupted and a reconnect attempt won't be performed. ## Connection events - `ready` - a connection has been established - `disconnected` - a connection has been interrupted due to a problem or as the result of a `destroy` method call - `reconnecting` - an attempt to recconect is in progress - `reconnected` - an attempt to reconnect succeed - `destroyed` - a client has been destroyed ## Server events - `changed` - a server reported a change ## Known changes - `options` - an option has been changed (the repeat option or the random option for example) - `output` - an audio channel has been changed - `mixer` - the volume level has been changed - `player` - the playback has been paused, resumed, or stoped - `playlist` - the playlist has been changed - `update` - a database update has been started or completed - `database` - the track database has been updated ## Methods - `init` - establish a connection; `ready` event follows a method call - `destroy` - closes a connection and rejects all the callbacks left in the callbacks queue; `disconnected` and `destroyed` events follow a method call - `sendCommand` - sends a command to a server and calls a callback when the server responds to the command - `sendCommandList` - sends a list of commands to a server and calls a callback when the server responds to all the commands ## Ways to send a command ```js mpdClient .sendCommand('status') .sendCommand('status', someHandler) .sendCommand({ cmd: 'add', args: 'somePath' }) .sendCommand({ cmd: 'add', args: ['somePath', 'anotherSomePath'] }, someHandler) .sendCommandList([{ cmd: 'add', args: 'somePath' }, 'play']) ``` ## MPD documention http://www.musicpd.org/doc/protocol/