MPD-server
A node js implementation of the MPD protocol. This library should make it easier to implement this protocol in your applications.
Getting Started
Installing
npm i mpd-server
Usage
'use strict';// returns a function to create a mpd-server object// this function expects a commandHandler function.const mpd = ; // The commandHandler function gets the command, arguments and connection from which it is requested.// It needs to return an promise which returns a string value { // the idle is handled internally and does not go through here console; return Promise;} // create the mpd server given the function which will handle the commandsconst mpdServer = ; // start listening for connectionsmpdServer; // register any callback your interested inmpdServer; // call this when a subsystem changes to notify the clientsserver;
Server
Methods
- constructor (cmdHandler)
Constructor of hte mpd server. The command handler function is responsible to handle all commands send by the clients. The only exception here is the idle
. This command is handled internally. This function must return a promise which resolves to the response for the client.
- listen (options)
Start listening for clients. The options are passed to the server listen.
- systemUpdate (subsystem)
Notify a subsystem update.
Events
- connect (connection)
- disconnect (connection)
- error (error, connection)
Objects
- server: net.Server
- connections: Connection[]
Connection
Events
- connect (connection)
- disconnect (connection)
- idle (connection)
Emitted when the connection is going in to idle mode as describe here.
- noidle (connection)
Emitted when the connection exits the idle mode.
- error (error, connection)
Emitted on socket error event.
- commanderror (error, connection, errorAck)
Emitted when a command handler failed. The third parameter is the error response as described in the protocol.
- system (subsystem, connection)
Emitted when a subsytem update is send.
Objects
- socket: net.Socket
Versioning
We use SemVer for versioning. For the versions available, see the tags on this repository.
License
This project is licensed under the Apache License - see the LICENSE file for details