Skip to content

depuits/mpd-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 = require('mpd-server');

// 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
function handleCommand(cmd, params, con) {
	// the idle is handled internally and does not go through here
	console.log('Command: ' + cmd);
	return Promise.resolve('command response');
}

// create the mpd server given the function which will handle the commands
const mpdServer = mpd(handleCommand);

// start listening for connections
mpdServer.listen({ port: 6600 }, () => {
	console.log('mpd running on ', mpdServer.server.address());
});

// register any callback your interested in
mpdServer.on('error', (err, s) => { console.log(err); });

// call this when a subsystem changes to notify the clients
server.systemUpdate('subsystem');

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

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

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