pub struct NautServer { /* private fields */ }Implementations§
Source§impl NautServer
impl NautServer
pub fn new(config: ServerConfig) -> Self
Sourcepub fn get_client_addr(&self, id: &ConnectionId) -> Option<&SocketAddr>
pub fn get_client_addr(&self, id: &ConnectionId) -> Option<&SocketAddr>
Gets the client’s id from an address
Sourcepub fn get_client_id(&self, addr: &SocketAddr) -> Option<&ConnectionId>
pub fn get_client_id(&self, addr: &SocketAddr) -> Option<&ConnectionId>
Gets the client’s address from an id
Examples found in repository?
examples/godot/godot_server.rs (line 11)
5fn main() {
6 let mut socket =
7 NautSocket::<NautServer>::new("127.0.0.1:8008", ServerConfig::default()).unwrap();
8 socket.register_plugin(LoggingPlugin);
9
10 socket.on("join", move |socket, (addr, _packet)| {
11 let client = socket.server().get_client_id(&addr);
12 let _ = socket.send("hello", &[], PacketDelivery::Reliable, *client.unwrap());
13 });
14
15 loop {
16 sleep(Duration::from_millis(1));
17 socket.poll();
18 socket.run_events();
19 }
20}More examples
examples/chat/chat_server.rs (line 60)
59fn on_send_message(socket: &mut NautSocket<'_, NautServer>, (addr, packet): (SocketAddr, &[u8])) {
60 let Some(id) = socket.server().get_client_id(&addr) else {
61 return;
62 };
63
64 let name = {
65 let Some(chatters) = socket.get_persistent::<Chatters>() else {
66 return;
67 };
68 let Ok(chatters) = chatters.read() else {
69 return;
70 };
71
72 chatters.names.get(id).cloned()
73 };
74
75 let Some(name) = name else {
76 return;
77 };
78
79 let msg = String::from_utf8(packet.to_vec()).unwrap();
80 let string = format!("{}: {}", name, msg);
81 let _ = socket.broadcast("recv_message", string.as_bytes(), PacketDelivery::Reliable);
82}
83
84fn create_new_chatter(
85 socket: &mut NautSocket<'_, NautServer>,
86 (addr, packet): (SocketAddr, &[u8]),
87) {
88 let Some(id) = socket.server().get_client_id(&addr) else {
89 return;
90 };
91
92 let Some(chatters) = socket.get_persistent::<Chatters>() else {
93 return;
94 };
95
96 let name = String::from_utf8(packet.to_vec()).unwrap();
97 {
98 let Ok(mut chatters) = chatters.write() else {
99 return;
100 };
101
102 chatters.names.insert(*id, name.clone());
103 }
104
105 let join_msg = format!("Welcome {name}");
106
107 let _ = socket.broadcast(
108 "recv_message",
109 join_msg.as_bytes(),
110 PacketDelivery::Reliable,
111 );
112}Sourcepub fn iter_server_events(&self) -> Iter<'_, ServerEvent>
pub fn iter_server_events(&self) -> Iter<'_, ServerEvent>
Gets an iterator to all server events in the queue, this will not remove any from queue
Examples found in repository?
examples/chat/chat_server.rs (line 41)
40fn remove_chatters_on_disconnect(socket: &mut NautSocket<'_, NautServer>) {
41 for event in socket.server().iter_server_events() {
42 match event {
43 ServerEvent::OnClientTimeout(id) | ServerEvent::OnClientDisconnected(id) => {
44 let Some(chatters) = socket.get_persistent::<Chatters>() else {
45 return;
46 };
47
48 let Ok(mut chatters) = chatters.write() else {
49 return;
50 };
51
52 chatters.names.remove(id);
53 }
54 _ => {}
55 }
56 }
57}Sourcepub fn get_max_connections(&self) -> u8
pub fn get_max_connections(&self) -> u8
Gets the max amount of connections the server can handle
Sourcepub fn get_current_connections(&self) -> u8
pub fn get_current_connections(&self) -> u8
Gets the current amount of established connections
Sourcepub fn close_connection_with_client(&mut self, id: ConnectionId)
pub fn close_connection_with_client(&mut self, id: ConnectionId)
Closes a connection with a client and pushes a client disconnected event to the server events queue
Trait Implementations§
Source§impl Default for NautServer
impl Default for NautServer
Source§impl SocketPlugin<'_, NautServer> for LoggingPlugin
impl SocketPlugin<'_, NautServer> for LoggingPlugin
fn register(&self, socket: &mut NautSocket<'_, NautServer>)
Source§impl<'socket> SocketType<'socket> for NautServer
impl<'socket> SocketType<'socket> for NautServer
Source§fn last_recv_seq_num_for_event(
&'socket mut self,
addr: &SocketAddr,
event: &str,
) -> Option<&'socket mut SequenceNumber>
fn last_recv_seq_num_for_event( &'socket mut self, addr: &SocketAddr, event: &str, ) -> Option<&'socket mut SequenceNumber>
Returns a mutable reference to the last received sequence number, it should be changed to
the newest sequence number if the last received sequence number is lower
Source§fn update_current_send_seq_num_for_event(
&mut self,
addr: &SocketAddr,
event: &str,
) -> Option<SequenceNumber>
fn update_current_send_seq_num_for_event( &mut self, addr: &SocketAddr, event: &str, ) -> Option<SequenceNumber>
Updates the current sequence number for that specific event and should be
handled on a per client basis
Auto Trait Implementations§
impl Freeze for NautServer
impl RefUnwindSafe for NautServer
impl Send for NautServer
impl Sync for NautServer
impl Unpin for NautServer
impl UnwindSafe for NautServer
Blanket Implementations§
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
Mutably borrows from an owned value. Read more