The server keeps a play queue per client, identified by the X-Queue-Id header. Send the stored ID with every request and save the ID from every response, so the client switches to the new queue after a reset or a sync. The ID is kept in localStorage so a page reload keeps the same queue. Also send Cache-Control: no-cache, so browsers that cached a random song before the server sent no-store fetch a new one.
40 lines
1.1 KiB
Markdown
40 lines
1.1 KiB
Markdown
# music-randomizer-vue
|
|
|
|
## Project setup
|
|
```
|
|
npm install
|
|
```
|
|
|
|
### Compiles and hot-reloads for development
|
|
```
|
|
npm run serve
|
|
```
|
|
|
|
### Compiles and minifies for production
|
|
```
|
|
npm run build
|
|
```
|
|
|
|
### Lints and fixes files
|
|
```
|
|
npm run lint
|
|
```
|
|
|
|
## Configuration
|
|
The Docker image writes `config.js` from `public/config.template.js` when the container starts, using these environment variables:
|
|
|
|
| Variable | Description |
|
|
|---|---|
|
|
| `API_HOSTNAME` | URL of the MusicServer, for example `https://music.example.com`. Empty to use the same host as the frontend. On another host, add the frontend's origin to the server's `CORS_ALLOWED_ORIGINS`. |
|
|
| `API_PASSWORD` | The MusicServer's `API_PASSWORD`, used to get an API token. Empty if the server has no password. Anyone who can open the frontend can read it. |
|
|
|
|
For `npm run serve`, create `public/config.js` (ignored by git):
|
|
```js
|
|
window.__RUNTIME_CONFIG__ = { API_HOSTNAME: 'http://localhost:8080', API_PASSWORD: '' };
|
|
```
|
|
|
|
When the frontend is served by the MusicServer image, the server provides `config.js` with its own `API_PASSWORD`.
|
|
|
|
### Customize configuration
|
|
See [Configuration Reference](https://cli.vuejs.org/config/).
|