~starkingdoms/starkingdoms

ref: f40e33203245891b3b000e1b35b417e6fd546876 starkingdoms/crates/unified/src/client/net.rs -rw-r--r-- 1.7 KiB
f40e3320 — core chore(part): part fix #1 5 months ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
use aeronet::io::connection::Disconnected;
use aeronet::io::{Session, SessionEndpoint};
use aeronet_replicon::client::AeronetRepliconClient;
use aeronet_transport::TransportConfig;
use bevy::prelude::*;

pub fn set_config(mut q: Query<&mut TransportConfig, Added<TransportConfig>>) {
    for mut q in &mut q {
        q.max_memory_usage = 8_388_608; // 8 MiB
    }
}

pub fn on_connecting(
    trigger: Trigger<OnAdd, SessionEndpoint>,
    names: Query<&Name>,
    mut commands: Commands,
) {
    let entity = trigger.target();
    let name = names.get(entity).unwrap();
    info!("{name} is connecting");

    commands.entity(entity).insert(AeronetRepliconClient);
}
pub fn on_connected(trigger: Trigger<OnAdd, Session>, names: Query<&Name>) {
    let entity = trigger.target();
    let name = names.get(entity).unwrap();
    info!("{name} is connected");
}
pub fn on_disconnected(trigger: Trigger<Disconnected>, names: Query<&Name>) {
    let session = trigger.target();
    let name = names.get(session).unwrap();

    match &*trigger {
        Disconnected::ByUser(reason) => {
            info!(?name, ?reason, "session disconnected by user");
        }
        Disconnected::ByPeer(reason) => {
            info!(?name, ?reason, "session disconnected by peer");
        }
        Disconnected::ByError(err) => {
            warn!(?name, "session disconnected due to error: {err:?}");
        }
    }
}

#[cfg(target_family = "wasm")]
pub fn websocket_config() -> aeronet_websocket::client::ClientConfig {
    aeronet_websocket::client::ClientConfig::default()
}
#[cfg(not(target_family = "wasm"))]
pub fn websocket_config() -> aeronet_websocket::client::ClientConfig {
    aeronet_websocket::client::ClientConfig::builder().with_no_cert_validation()
}