1
0
mirror of https://github.com/actix/examples synced 2025-02-26 10:53:51 +01:00

chore: update deps

This commit is contained in:
Rob Ede 2025-02-24 03:28:41 +00:00
parent ad0c1b765e
commit a6df6cc903
No known key found for this signature in database
GPG Key ID: 97C636207D3EF933
6 changed files with 464 additions and 447 deletions

877
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -17,7 +17,7 @@ mod server;
pub use self::server::{ChatServer, ChatServerHandle}; pub use self::server::{ChatServer, ChatServerHandle};
/// Connection ID. /// Connection ID.
pub type ConnId = usize; pub type ConnId = u64;
/// Room ID. /// Room ID.
pub type RoomId = String; pub type RoomId = String;

View File

@ -9,7 +9,7 @@ use std::{
}, },
}; };
use rand::{thread_rng, Rng as _}; use rand::Rng as _;
use tokio::sync::{mpsc, oneshot}; use tokio::sync::{mpsc, oneshot};
use crate::{ConnId, Msg, RoomId}; use crate::{ConnId, Msg, RoomId};
@ -124,7 +124,7 @@ impl ChatServer {
self.send_system_message("main", 0, "Someone joined").await; self.send_system_message("main", 0, "Someone joined").await;
// register session with random connection ID // register session with random connection ID
let id = thread_rng().gen::<ConnId>(); let id = rand::rng().random::<ConnId>();
self.sessions.insert(id, tx); self.sessions.insert(id, tx);
// auto join session to main room // auto join session to main room

View File

@ -59,7 +59,6 @@ pub struct Join {
pub struct ChatServer { pub struct ChatServer {
sessions: HashMap<usize, Recipient<session::Message>>, sessions: HashMap<usize, Recipient<session::Message>>,
rooms: HashMap<String, HashSet<usize>>, rooms: HashMap<String, HashSet<usize>>,
rng: ThreadRng,
} }
impl Default for ChatServer { impl Default for ChatServer {
@ -71,7 +70,6 @@ impl Default for ChatServer {
ChatServer { ChatServer {
sessions: HashMap::new(), sessions: HashMap::new(),
rooms, rooms,
rng: rand::thread_rng(),
} }
} }
} }
@ -111,7 +109,7 @@ impl Handler<Connect> for ChatServer {
self.send_message("main", "Someone joined", 0); self.send_message("main", "Someone joined", 0);
// register session with random id // register session with random id
let id = self.rng.gen::<usize>(); let id = rand::rng().random::<usize>();
self.sessions.insert(id, msg.addr); self.sessions.insert(id, msg.addr);
// auto join session to main room // auto join session to main room

View File

@ -11,7 +11,7 @@ use std::{
}; };
use actix::prelude::*; use actix::prelude::*;
use rand::{rngs::ThreadRng, Rng}; use rand::Rng as _;
/// Chat server sends this messages to session /// Chat server sends this messages to session
#[derive(Message)] #[derive(Message)]
@ -22,7 +22,7 @@ pub struct Message(pub String);
/// ///
/// New chat session is created /// New chat session is created
#[derive(Message)] #[derive(Message)]
#[rtype(usize)] #[rtype(u64)]
pub struct Connect { pub struct Connect {
pub addr: Recipient<Message>, pub addr: Recipient<Message>,
} }
@ -31,7 +31,7 @@ pub struct Connect {
#[derive(Message)] #[derive(Message)]
#[rtype(result = "()")] #[rtype(result = "()")]
pub struct Disconnect { pub struct Disconnect {
pub id: usize, pub id: u64,
} }
/// Send message to specific room /// Send message to specific room
@ -39,7 +39,7 @@ pub struct Disconnect {
#[rtype(result = "()")] #[rtype(result = "()")]
pub struct ClientMessage { pub struct ClientMessage {
/// Id of the client session /// Id of the client session
pub id: usize, pub id: u64,
/// Peer message /// Peer message
pub msg: String, pub msg: String,
/// Room name /// Room name
@ -58,7 +58,7 @@ impl actix::Message for ListRooms {
#[rtype(result = "()")] #[rtype(result = "()")]
pub struct Join { pub struct Join {
/// Client ID /// Client ID
pub id: usize, pub id: u64,
/// Room name /// Room name
pub name: String, pub name: String,
@ -69,9 +69,8 @@ pub struct Join {
/// Implementation is very naïve. /// Implementation is very naïve.
#[derive(Debug)] #[derive(Debug)]
pub struct ChatServer { pub struct ChatServer {
sessions: HashMap<usize, Recipient<Message>>, sessions: HashMap<u64, Recipient<Message>>,
rooms: HashMap<String, HashSet<usize>>, rooms: HashMap<String, HashSet<u64>>,
rng: ThreadRng,
visitor_count: Arc<AtomicUsize>, visitor_count: Arc<AtomicUsize>,
} }
@ -84,7 +83,6 @@ impl ChatServer {
ChatServer { ChatServer {
sessions: HashMap::new(), sessions: HashMap::new(),
rooms, rooms,
rng: rand::thread_rng(),
visitor_count, visitor_count,
} }
} }
@ -92,7 +90,7 @@ impl ChatServer {
impl ChatServer { impl ChatServer {
/// Send message to all users in the room /// Send message to all users in the room
fn send_message(&self, room: &str, message: &str, skip_id: usize) { fn send_message(&self, room: &str, message: &str, skip_id: u64) {
if let Some(sessions) = self.rooms.get(room) { if let Some(sessions) = self.rooms.get(room) {
for id in sessions { for id in sessions {
if *id != skip_id { if *id != skip_id {
@ -116,7 +114,7 @@ impl Actor for ChatServer {
/// ///
/// Register new session and assign unique id to this session /// Register new session and assign unique id to this session
impl Handler<Connect> for ChatServer { impl Handler<Connect> for ChatServer {
type Result = usize; type Result = u64;
fn handle(&mut self, msg: Connect, _: &mut Context<Self>) -> Self::Result { fn handle(&mut self, msg: Connect, _: &mut Context<Self>) -> Self::Result {
println!("Someone joined"); println!("Someone joined");
@ -125,7 +123,7 @@ impl Handler<Connect> for ChatServer {
self.send_message("main", "Someone joined", 0); self.send_message("main", "Someone joined", 0);
// register session with random id // register session with random id
let id = self.rng.gen::<usize>(); let id = rand::rng().random::<u64>();
self.sessions.insert(id, msg.addr); self.sessions.insert(id, msg.addr);
// auto join session to main room // auto join session to main room

View File

@ -14,7 +14,7 @@ const CLIENT_TIMEOUT: Duration = Duration::from_secs(10);
#[derive(Debug)] #[derive(Debug)]
pub struct WsChatSession { pub struct WsChatSession {
/// unique session id /// unique session id
pub id: usize, pub id: u64,
/// Client must send ping at least once per 10 seconds (CLIENT_TIMEOUT), /// Client must send ping at least once per 10 seconds (CLIENT_TIMEOUT),
/// otherwise we drop connection. /// otherwise we drop connection.