broker configurable ws port

This commit is contained in:
Evan Feenstra
2023-07-13 15:47:35 -07:00
parent 092849cbc2
commit 3f99d27766
2 changed files with 32 additions and 2 deletions

View File

@@ -28,8 +28,8 @@ pub fn start_broker(
let (mut link_tx, mut link_rx) = broker.link("localclient")?;
link_tx.subscribe(format!("+/{}", topics::HELLO));
link_tx.subscribe(format!("+/{}", topics::BYE));
let _ = link_tx.subscribe(format!("+/{}", topics::HELLO));
let _ = link_tx.subscribe(format!("+/{}", topics::BYE));
let auth_sender_ = auth_sender.clone();
std::thread::spawn(move || {

View File

@@ -41,6 +41,9 @@ pub fn read_broker_config() -> Settings {
if let Some(http_port) = read_http_port_setting(&table) {
settings.http_port = http_port;
}
if let Some(ws_port) = read_ws_port_setting(&table) {
settings.websocket_port = Some(ws_port);
}
} else {
log::info!("File broker.conf not found, using default settings");
}
@@ -63,6 +66,13 @@ pub fn read_broker_config() -> Settings {
}
}
}
if let Ok(env_port) = env::var("BROKER_WS_PORT") {
if let Ok(ws_port) = env_port.parse::<u16>() {
if ws_port > 1023 {
settings.websocket_port = Some(ws_port);
}
}
}
settings
}
@@ -157,3 +167,23 @@ fn read_http_port_setting(table: &Value) -> Option<u16> {
Some(temp.try_into().unwrap())
}
}
fn read_ws_port_setting(table: &Value) -> Option<u16> {
if let None = table.get("ws_port") {
log::info!("Broker ws port not specified, setting to default 8083");
None
} else {
let temp = table["ws_port"]
.as_integer()
.expect("The ws port number is not an integer greater than 1023");
if temp <= 1023 {
panic!("The ws port number is not an integer greater than 1023")
}
let max: i64 = u16::MAX.into();
if temp > max {
panic!("The ws port number is way too big!")
}
log::info!("Read broker ws port setting: {}", temp);
Some(temp.try_into().unwrap())
}
}