Server Events

You can subscribe to server-side playback updates. This is useful when you want to display a player in your app even though playback happens on another device.

To subscribe, open a WebSocket connection to /ws/playback on the MusicPimp server.

Events

The following events are sent by the server.

Time updated

Sent when playback has progressed in time. The playback position is given as an integer in seconds. Sent at least once per second during playback:

{"event":"time_updated","position":42}

Track changed

The player track has changed.

{
    "event":"track_changed",
    "track":{
        "id":"Pearl+Jam+-+Man+Of+The+Hour.mp3",
        "title":"Man Of The Hour",
        "artist":"Pearl Jam",
        "album":"My Lost Dogs",
        "duration":225,
        "size":5408768
    }
}

The track size is reported in bytes.

Playstate changed

Sent when the playstate has changed.

{"event":"playstate_changed","state":"Stopped"}

The playstate may be one of the following among others:

  • Playing
  • Paused
  • Stopped
  • NoMedia

NoMedia implies that the player has no track set.

Playlist modified

The tracks in the playlist have been modified. A separate event exists for when the playlist index has changed; see the next item.

{
    "event":"playlist_modified",
    "playlist":[
        {
            "id":"Pearl+Jam+-+Man+Of+The+Hour.mp3",
            "title":"Man Of The Hour",
            "artist":"Pearl Jam",
            "album":"My Lost Dogs",
            "duration":225,
            "size":5408768
        },
        {
            "id":"ryan+adams+-+desire.mp3",
            "title":"Desire",
            "artist":"Ryan Adams",
            "album":"48 Hours",
            "duration":231,
            "size":5546654
        }
    ]
}

Playlist index changed

The player has skipped to a new song in the playlist.

{"event":"playlist_index_changed","playlist_index":42}

Volume changed

The volume has changed. The volume is an integer value within [0,100].

{"event":"volume_changed","volume":42}

Mute toggled

Mute has been turned on or off.

{"event":"mute_toggled","mute":true}