websocket protocol

This commit is contained in:
2024-10-19 16:00:31 +02:00
parent 5e651b382d
commit b94b3cf44f
13 changed files with 440 additions and 217 deletions

View File

@@ -18,7 +18,7 @@ use lock::Lock;
use oauth::{start_code_listener, start_code_to_token};
use pipe::Pipe;
use state_machine::Event;
use tokio::task::JoinSet;
use tokio::{sync::broadcast::channel, task::JoinSet};
use tracing::Level;
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, Layer};
@@ -44,8 +44,7 @@ async fn main() -> Result<(), anyhow::Error> {
init_logging()?;
// let (socket_sender, socket_receiver) = tokio::sync::broadcast::channel(1);
let (event_sender, event_receiver) = tokio::sync::broadcast::channel(10);
let (event_sender, event_receiver) = channel(10);
let args = Arguments::parse();
if handle_single_instance(&args).await? {
@@ -93,14 +92,21 @@ async fn main() -> Result<(), anyhow::Error> {
let receiver = event_receiver.resubscribe();
futures.spawn(start_code_to_token(c, pipe_receiver, sender, receiver));
// Prepare channels for socket <-> simconnect
let (simconnect_sender, __simconnect_receiver) = channel(10);
let (__socket_sender, socket_receiver) = channel(10);
// Start the websocket client
// The socket client will just sit there until TokenReceivedEvent comes in to authenticate with the socket server
// The server needs to not accept any messages until the authentication is verified
let c = config.clone();
let sender = event_sender.clone();
let receiver = event_receiver.resubscribe();
futures.spawn(client::start(sender, receiver));
// We need 2 way channels (2 channels, both with tx/rx) to send data from the socket to simconnect and back
futures.spawn(client::start(
c,
simconnect_sender,
socket_receiver,
sender,
receiver,
));
// Start the simconnect listener
// The simconnect sends data to the webscoket