use ecson::prelude::*;
fn broadcast_system(
mut ev_received: MessageReader<MessageReceived>,
mut ev_send: MessageWriter<SendMessage>,
client_query: Query<Entity, With<ClientId>>,
) {
for msg in ev_received.read() {
let NetworkPayload::Text(text) = &msg.payload else {
continue;
};
let broadcast_text = format!("User {}: {}", msg.client_id, text);
let payload = NetworkPayload::Text(broadcast_text);
for target_entity in client_query.iter() {
ev_send.write(SendMessage {
target: target_entity,
payload: payload.clone(),
});
}
}
}
fn main() {
EcsonApp::new()
.add_plugins(EcsonWebSocketPlugin::new("127.0.0.1:8080"))
.add_systems(Update, broadcast_system)
.run();
}