pub struct Server<E>{ /* private fields */ }Expand description
A server that uses either UDP or WebRTC communication to send/receive messages to/from connected clients, and syncs registered entities to clients to whom they are in-scope
Implementations§
Source§impl<E> Server<E>
impl<E> Server<E>
Sourcepub fn new<P>(server_config: ServerConfig, protocol: P) -> Server<E>
pub fn new<P>(server_config: ServerConfig, protocol: P) -> Server<E>
Create a new Server
Sourcepub fn is_listening(&self) -> bool
pub fn is_listening(&self) -> bool
Returns whether or not the Server has initialized correctly and is listening for Clients
Sourcepub fn socket_config(&self) -> &SocketConfig
pub fn socket_config(&self) -> &SocketConfig
Returns socket config
Sourcepub fn receive<W>(&mut self, world: W) -> Events<E>where
W: WorldMutType<E>,
pub fn receive<W>(&mut self, world: W) -> Events<E>where
W: WorldMutType<E>,
Must be called regularly, maintains connection to and receives messages from all Clients
Sourcepub fn accept_connection(&mut self, user_key: &UserKey)
pub fn accept_connection(&mut self, user_key: &UserKey)
Accepts an incoming Client User, allowing them to establish a connection with the Server
Sourcepub fn reject_connection(&mut self, user_key: &UserKey)
pub fn reject_connection(&mut self, user_key: &UserKey)
Rejects an incoming Client User, terminating their attempt to establish a connection with the Server
Sourcepub fn send_message<C, M>(&mut self, user_key: &UserKey, message: &M)
pub fn send_message<C, M>(&mut self, user_key: &UserKey, message: &M)
Queues up an Message to be sent to the Client associated with a given UserKey
Sourcepub fn broadcast_message<C, M>(&mut self, message: &M)
pub fn broadcast_message<C, M>(&mut self, message: &M)
Sends a message to all connected users using a given channel
pub fn receive_tick_buffer_messages(&mut self, tick: &u16) -> TickBufferMessages
Sourcepub fn scope_checks(&self) -> Vec<(RoomKey, UserKey, E)>
pub fn scope_checks(&self) -> Vec<(RoomKey, UserKey, E)>
Used to evaluate whether, given a User & Entity that are in the same Room, said Entity should be in scope for the given User.
While Rooms allow for a very simple scope to which an Entity can belong, this provides complete customization for advanced scopes.
Return a collection of Entity Scope Sets, being a unique combination of a related Room, User, and Entity, used to determine which Entities to replicate to which Users
Sourcepub fn send_all_updates<W>(&mut self, world: W)where
W: WorldRefType<E>,
pub fn send_all_updates<W>(&mut self, world: W)where
W: WorldRefType<E>,
Sends all update messages to all Clients. If you don’t call this method, the Server will never communicate with it’s connected Clients
pub fn enable_replication(&mut self, entity: &E)
pub fn disable_replication(&mut self, entity: &E)
Sourcepub fn spawn_entity<W>(&mut self, world: W) -> EntityMut<'_, E, W>where
W: WorldMutType<E>,
pub fn spawn_entity<W>(&mut self, world: W) -> EntityMut<'_, E, W>where
W: WorldMutType<E>,
Creates a new Entity and returns an EntityMut which can be used for further operations on the Entity
Sourcepub fn spawn_entity_at(&mut self, entity: &E)
pub fn spawn_entity_at(&mut self, entity: &E)
Creates a new Entity with a specific id
Sourcepub fn entity<W>(&self, world: W, entity: &E) -> EntityRef<E, W>where
W: WorldRefType<E>,
pub fn entity<W>(&self, world: W, entity: &E) -> EntityRef<E, W>where
W: WorldRefType<E>,
Retrieves an EntityRef that exposes read-only operations for the Entity. Panics if the Entity does not exist.
Sourcepub fn entity_mut<W>(&mut self, world: W, entity: &E) -> EntityMut<'_, E, W>where
W: WorldMutType<E>,
pub fn entity_mut<W>(&mut self, world: W, entity: &E) -> EntityMut<'_, E, W>where
W: WorldMutType<E>,
Retrieves an EntityMut that exposes read and write operations for the Entity. Panics if the Entity does not exist.
Sourcepub fn entities<W>(&self, world: W) -> Vec<E>where
W: WorldRefType<E>,
pub fn entities<W>(&self, world: W) -> Vec<E>where
W: WorldRefType<E>,
Gets a Vec of all Entities in the given World
pub fn entity_owner(&self, entity: &E) -> EntityOwner
Sourcepub fn user_exists(&self, user_key: &UserKey) -> bool
pub fn user_exists(&self, user_key: &UserKey) -> bool
Returns whether or not a User exists for the given RoomKey
Sourcepub fn user(&self, user_key: &UserKey) -> UserRef<'_, E>
pub fn user(&self, user_key: &UserKey) -> UserRef<'_, E>
Retrieves an UserRef that exposes read-only operations for the User associated with the given UserKey. Panics if the user does not exist.
Sourcepub fn user_mut(&mut self, user_key: &UserKey) -> UserMut<'_, E>
pub fn user_mut(&mut self, user_key: &UserKey) -> UserMut<'_, E>
Retrieves an UserMut that exposes read and write operations for the User associated with the given UserKey. Returns None if the user does not exist.
Sourcepub fn users_count(&self) -> usize
pub fn users_count(&self) -> usize
Get the number of Users currently connected
Sourcepub fn user_scope(&mut self, user_key: &UserKey) -> UserScopeMut<'_, E>
pub fn user_scope(&mut self, user_key: &UserKey) -> UserScopeMut<'_, E>
Returns a UserScopeMut, which is used to include/exclude Entities for a given User
Sourcepub fn make_room(&mut self) -> RoomMut<'_, E>
pub fn make_room(&mut self) -> RoomMut<'_, E>
Creates a new Room on the Server and returns a corresponding RoomMut, which can be used to add users/entities to the room or retrieve its key
Sourcepub fn room_exists(&self, room_key: &RoomKey) -> bool
pub fn room_exists(&self, room_key: &RoomKey) -> bool
Returns whether or not a Room exists for the given RoomKey
Sourcepub fn room(&self, room_key: &RoomKey) -> RoomRef<'_, E>
pub fn room(&self, room_key: &RoomKey) -> RoomRef<'_, E>
Retrieves an RoomMut that exposes read and write operations for the Room associated with the given RoomKey. Panics if the room does not exist.
Sourcepub fn room_mut(&mut self, room_key: &RoomKey) -> RoomMut<'_, E>
pub fn room_mut(&mut self, room_key: &RoomKey) -> RoomMut<'_, E>
Retrieves an RoomMut that exposes read and write operations for the Room associated with the given RoomKey. Panics if the room does not exist.
Sourcepub fn rooms_count(&self) -> usize
pub fn rooms_count(&self) -> usize
Get a count of how many Rooms currently exist
Sourcepub fn current_tick(&self) -> u16
pub fn current_tick(&self) -> u16
Gets the current tick of the Server
Sourcepub fn average_tick_duration(&self) -> Duration
pub fn average_tick_duration(&self) -> Duration
Gets the current average tick duration of the Server
pub fn outgoing_bandwidth_total(&mut self) -> f32
pub fn incoming_bandwidth_total(&mut self) -> f32
pub fn outgoing_bandwidth_to_client(&mut self, address: &SocketAddr) -> f32
pub fn incoming_bandwidth_from_client(&mut self, address: &SocketAddr) -> f32
Sourcepub fn rtt(&self, user_key: &UserKey) -> Option<f32>
pub fn rtt(&self, user_key: &UserKey) -> Option<f32>
Gets the average Round Trip Time measured to the given User’s Client
Sourcepub fn jitter(&self, user_key: &UserKey) -> Option<f32>
pub fn jitter(&self, user_key: &UserKey) -> Option<f32>
Gets the average Jitter measured in connection to the given User’s Client