Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

41 Commits

Folders and files

Repository files navigation


RakNet

A RakNet transport library written in Rust.

rust transport license

Crates

  • raknet - a pure sans-io implementation (client, server, and session).
  • raknet-tokio - an async tokio wrapper over the sans-io crate.
  • bevy-raknet - a Bevy plugin wrapping the sans-io crate directly.

Usage

  • tokio server:

    let mut server = RakServer::new(addr, |config| {
        config.guid = 123456789;
        config.message = Box::new(*b"my server message");
    });
    server.start().await?;
    
    loop {
        let mut session = server.accept().await?;
        tokio::spawn(async move {
            while let Ok(packet) = session.recv::<Box<[u8]>>().await {
                let _ = session
                    .send(packet, RakReliability::ReliableOrdered, RakPriority::Immediate)
                    .await;
            }
        });
    }
  • bevy server:

    app.add_plugins(RakServerPlugin)
        .insert_resource(RakServer::new(addr, |_| {})?)
        .add_systems(Update, (on_connect, echo).after(RakServerSet));
    
    fn on_connect(mut events: MessageReader<RakServerEvent>, mut commands: Commands) {
        for event in events.read() {
            if let RakServerEvent::SessionConnected { id, .. } = event {
                commands.spawn(Player(*id));
            }
        }
    }
    
    fn echo(mut server: ResMut<RakServer>) {
        while let Some((id, packet)) = server.recv() {
            let _ = server.send(id, packet, RakReliability::ReliableOrdered, RakPriority::Immediate);
        }
    }

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages