The goal is to integrate a .NET RabbitMQ connection into the backend database server by database-api to allow it to receive, process, and send RabbitMQ messages to the vehicle-side library. This means working inside the database-api codebase and implement
Getting Stared
Create a separate branch of the database-api codebase on Github and try running it. To overcome the issue of Redis database causing potential errors, run this docker-compose.yml before starting the backend:
On GCS-side, telemetry is transmitted to the frontend via WebSocket. The way WebSocket works is that the frontend client will call an HTTP endpoint to access a WebSocket connection. Once a connection is accepted by the backend server, messages can then be sent to and from the backend freely. You will have access to SendAsync and ReceiveAsync methods to listen for and send messages.
For the purpose of integration, we want the WebSocket endpoint to act like an event handler: Once the frontend client established connection with the backend, it will continually listen for messages. If the designated vehicle sends a RabbitMQ message, the message will trigger an event handler and relay that message to the frontend by sending it with WebSocket.
You will need to heavily modify the sample WebSocket endpoint in the to fit this goal. If you have any questions, please let me know!
2. Commands
On GCS-side, commands are handled via RESTful HTTP endpoints, that act like functions that can be requested remotely via HTTP. For the purpose of integration, we want this to endpoint to publish a RabbitMQ message whenever it's requested. The content is of this RabbitMQ message is whatever the body of the HTTP request is.
Since these HTTP endpoints are not quite written in the database-api codebase yet, you might want to write some of your own endpoints just to test out your implementation. Good luck!
Also a quick reminder of how the Vehicle-to-GCS integration model looks like.
Issue Goal
The goal is to integrate a .NET RabbitMQ connection into the backend database server by
database-api
to allow it to receive, process, and send RabbitMQ messages to the vehicle-side library. This means working inside thedatabase-api
codebase and implementGetting Stared
Create a separate branch of the
database-api
codebase on Github and try running it. To overcome the issue of Redis database causing potential errors, run thisdocker-compose.yml
before starting the backend:How It Should Works
1. Telemetry
On GCS-side, telemetry is transmitted to the frontend via WebSocket. The way WebSocket works is that the frontend client will call an HTTP endpoint to access a WebSocket connection. Once a connection is accepted by the backend server, messages can then be sent to and from the backend freely. You will have access to
SendAsync
andReceiveAsync
methods to listen for and send messages.For the purpose of integration, we want the WebSocket endpoint to act like an event handler: Once the frontend client established connection with the backend, it will continually listen for messages. If the designated vehicle sends a RabbitMQ message, the message will trigger an event handler and relay that message to the frontend by sending it with WebSocket.
You will need to heavily modify the sample WebSocket endpoint in the to fit this goal. If you have any questions, please let me know!
2. Commands
On GCS-side, commands are handled via RESTful HTTP endpoints, that act like functions that can be requested remotely via HTTP. For the purpose of integration, we want this to endpoint to publish a RabbitMQ message whenever it's requested. The content is of this RabbitMQ message is whatever the body of the HTTP request is.
Since these HTTP endpoints are not quite written in the
database-api
codebase yet, you might want to write some of your own endpoints just to test out your implementation. Good luck!Also a quick reminder of how the Vehicle-to-GCS integration model looks like.![Image](https://github.com/Northrop-Grumman-Collaboration-Project/progress-board-tracker/assets/110973167/91d03b0c-340d-4071-accc-78f79b4d81ac)