A browser application that implements a geo-filtering algorithm to dynamically generate topic subscriptions that attract pre-filtered sets of streaming GPS data from SCDS feeds.
This GUI displays data produced by SWIM Feed Handler, an application designed to relay messages from the FAA's publicly available US System Wide Information Management (SWIM) data feeds to a Solace PubSub+ Event Broker. The SWIM Feed Handler GitHub repository includes a thorough overview of the steps required to sign up with the FAA to receive SCDS data and to run the application locally.
https://solacese.github.io/faa-scds-feeds-gui/
- master: source code for the site hosted at the above public URL
- kdb-stats: includes a panel to display stats produced by an accompanying project, scds-solace-kdb
First, clone the repository and install the dependencies.
git clone https://github.com/solacese/faa-scds-feeds-gui.git
cd faa-scds-feeds-gui
npm i
Then, edit solace.config.js
and google-maps.config.js
. The Google Maps API key included in this repository is restricted to this application's public URL, so you'll need your own if you want to develop locally. You can do this by following along Google's instructions for getting a Maps JavaScript API key.
Once the connection details and access key are configured, you can run the app using Rollup:
npm run dev
If you navigate to localhost:5000 you should see the app running.
The src
directory is being watched, so if you save a file and reload your browser you will see the changes.
Note: there's a small bug with sirv's dev server restarts, and sometimes the console will show that the app is being served to localhost:5001 while it is bundling. It will switch to localhost:5000 when it finishes bundling or sometimes on reload, so be a little patient and it should be fine. The visual glitch didn't affect my development experience at all, but if your app isn't being served successfully on localhost:5000, please add an issue to this repository.
By default, the server will only respond to requests from localhost. To allow connections from other computers, edit the sirv
commands in package.json to include the option --host 0.0.0.0
.
The build command is...
npm run build
...and the publish directory is public
.
You can run the newly built app with npm run start
. This uses sirv, which is included in your package.json's dependencies
.
- SWIM Flight Data Publication Service - info about the data feeds this application uses for real-time aircraft position data
- Topic Hierarchy and Topic Architecture Best Practices - a blog post dedicated to describing how to get the most out of your topic space (e.g. putting lat/lng values in the topic space enables geo-filtering).
- Google Maps Marker Clustering - docs that help explain the aircraft marker clustering that improves map performance
- solclientjs - docs for Solace's native JavaScript API