Struct lightyear::connection::netcode::ServerConfig
source · pub struct ServerConfig<Ctx> { /* private fields */ }Expand description
Configuration for a server.
num_disconnect_packets- The number of redundant disconnect packets that will be sent to a client when the server is disconnecting it.keep_alive_send_rate- The rate at which keep-alive packets will be sent to clients.on_connect- A callback that will be called when a client is connected to the server.on_disconnect- A callback that will be called when a client is disconnected from the server.
§Example
use std::sync::{Arc, Mutex};
use crate::lightyear::connection::netcode::{NetcodeServer, ServerConfig};
let thread_safe_counter = Arc::new(Mutex::new(0));
let cfg = ServerConfig::with_context(thread_safe_counter).on_connect(|idx, _, ctx| {
let mut counter = ctx.lock().unwrap();
*counter += 1;
println!("client {} connected, counter: {idx}", counter);
});
let server = NetcodeServer::with_config(protocol_id, private_key, cfg).unwrap();Implementations§
source§impl<Ctx> ServerConfig<Ctx>
impl<Ctx> ServerConfig<Ctx>
sourcepub fn new() -> ServerConfig<()>
pub fn new() -> ServerConfig<()>
Create a new, default server configuration with no context.
sourcepub fn with_context(ctx: Ctx) -> Self
pub fn with_context(ctx: Ctx) -> Self
Create a new server configuration with context that will be passed to the callbacks.
sourcepub fn num_disconnect_packets(self, num: usize) -> Self
pub fn num_disconnect_packets(self, num: usize) -> Self
Set the number of redundant disconnect packets that will be sent to a client when the server is disconnecting it.
The default is 10 packets.
sourcepub fn keep_alive_send_rate(self, rate_seconds: f64) -> Self
pub fn keep_alive_send_rate(self, rate_seconds: f64) -> Self
Set the rate (in seconds) at which keep-alive packets will be sent to clients.
The default is 10 packets per second. (0.1 seconds)
sourcepub fn client_timeout_secs(self, client_timeout_secs: i32) -> Self
pub fn client_timeout_secs(self, client_timeout_secs: i32) -> Self
Set the duration (in seconds) after which the server disconnects a client if they don’t hear from them. The default is 10 seconds.
sourcepub fn token_expire_secs(self, expire_secs: i32) -> Self
pub fn token_expire_secs(self, expire_secs: i32) -> Self
Set the duration (in seconds) after which ConnectTokens generated by the server will expire The default is 30 seconds.
sourcepub fn server_addr(self, server_addr: SocketAddr) -> Self
pub fn server_addr(self, server_addr: SocketAddr) -> Self
Set the socket address of the server.
sourcepub fn on_connect<F>(self, cb: F) -> Self
pub fn on_connect<F>(self, cb: F) -> Self
Provide a callback that will be called when a client is connected to the server.
The callback will be called with the client index and the context that was provided (provide a None context if you don’t need one).
See ServerConfig for an example.
sourcepub fn on_disconnect<F>(self, cb: F) -> Self
pub fn on_disconnect<F>(self, cb: F) -> Self
Provide a callback that will be called when a client is disconnected from the server.
The callback will be called with the client index and the context that was provided (provide a None context if you don’t need one).
See ServerConfig for an example.
Trait Implementations§
Auto Trait Implementations§
impl<Ctx> Freeze for ServerConfig<Ctx>where
Ctx: Freeze,
impl<Ctx> !RefUnwindSafe for ServerConfig<Ctx>
impl<Ctx> Send for ServerConfig<Ctx>where
Ctx: Send,
impl<Ctx> Sync for ServerConfig<Ctx>where
Ctx: Sync,
impl<Ctx> Unpin for ServerConfig<Ctx>where
Ctx: Unpin,
impl<Ctx> !UnwindSafe for ServerConfig<Ctx>
Blanket Implementations§
source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
T ShaderType for self. When used in AsBindGroup
derives, it is safe to assume that all images in self exist.source§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
source§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Self using data from the given World.source§impl<T> Instrument for T
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more