This is an implementation of a subset of the STOMP protocol in node.js, for purpose of deploying a RadioVis service.
RadioVis was standardised in ETSI TS 101 499, Hybrid Digital Radio (DAB, DRM, RadioDNS); SlideShow; User Application Specification.
The recommended version of Node.js is v20
npm install
npm start
This will start a STOMP server running on port 61613.
Content is pushed to clients via a HTTP POST. The content can be sent using either URL encoding, or as JSON. Text and Image can be sent using separate requests or in the same request. A link may optionally be specified at the same time as an image.
For example to update the text for a station using curl:
curl -v http://localhost:3000/services/station1 -d 'text=Hello World'
Or to update the image and link:
curl http://localhost:3000/services/station2 \
-d 'image=http://www.example.com/images/myimage.jpg' \
-d 'link=http://www.example.com/programmes/breakfast'
npm test
To generate a test coverage report:
npm run coverage
The settings.js file is used to configure the server. It supports the following confection options:
Setting Name | Default | Description |
---|---|---|
stompPort |
61613 |
STOMP port to listen for client connections on. |
stompHost |
0.0.0.0 |
IP address to bind STOMP connections to. |
adminPort |
3000 |
HTTP port to listen for HTTP admin connections on. |
adminHost |
127.0.0.1 |
IP address to bind HTTP admin interface to. |
servicesFile |
services.json |
JSON file to load list of broadcast services from. |
republishFrequency |
900 |
How often to re-publish messages to subscribers. |
wildcard |
false |
Enable support for wildcard bearer in topics (* ) |
BBC R&D have written a GUI python tool called RadioVisDemo which can be useful to test a RadioVis server:
https://github.com/bbc/RadioVisDemo
Or to test using the command-line, you could use the stomp.py tool to subscribe to messages:
stomp -H 127.0.0.1 -P 61613 -S 1.0 -L '/topic/fm/ce2/c201/09710/text'
Here is is another example subscribing to all services using a wildcard topic:
stomp -H 127.0.0.1 -P 61613 -S 1.0 -L '/topic/*/text' --verbose
Copyright 2017-2024 British Broadcasting Corporation
The RadioVis STOMP Server is free software; you can redistribute it and/or modify it under the terms of the Apache License, Version 2.0.
The RadioVis STOMP Server is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Apache License, Version 2.0 for more details.
The favicon.ico image was created from the Mozilla radio SVG:
https://github.com/mozilla/fxemoji/blob/gh-pages/svgs/objects/u1F4FB-radio.svg
Which is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0):