feat: message payload

This commit is contained in:
nathan 2023-03-14 08:51:01 +08:00
parent 5a7e223b99
commit db498ef5e8
4 changed files with 9 additions and 24 deletions

View File

@ -27,12 +27,12 @@ impl MessageReceivers {
MessageReceivers::default()
}
pub fn set(&mut self, channel: u8, receiver: Arc<dyn MessageReceiver>) {
pub fn insert(&mut self, channel: u8, receiver: Arc<dyn MessageReceiver>) {
self.inner.insert(channel, receiver);
}
pub fn get(&self, source: u8) -> Option<Arc<dyn MessageReceiver>> {
self.inner.get(&source).cloned()
pub fn get(&self, source: u8) -> Option<&Arc<dyn MessageReceiver>> {
self.inner.get(&source)
}
}
@ -102,7 +102,7 @@ impl StreamHandler<Result<ws::Message, ws::ProtocolError>> for WSClient {
ctx.pong(&msg);
}
Ok(Pong(_msg)) => {
// tracing::debug!("Receive {} pong {:?}", &self.session_id, &msg);
tracing::trace!("Receive {} pong {:?}", &self.session_id, &msg);
self.hb = Instant::now();
}
Ok(Binary(bytes)) => {

View File

@ -69,10 +69,6 @@ pub struct SocketMessagePayload {
}
impl SocketMessagePayload {
pub fn to_bytes(&self) -> Vec<u8> {
bincode::serialize(self).unwrap()
}
pub fn from_bytes<T: AsRef<[u8]>>(bytes: T) -> Self {
bincode::deserialize(bytes.as_ref()).unwrap()
}

View File

@ -9,4 +9,3 @@ pub use server::WSServer;
pub(crate) const HEARTBEAT_INTERVAL: Duration = Duration::from_secs(8);
pub(crate) const PING_TIMEOUT: Duration = Duration::from_secs(60);
pub(crate) const MAX_PAYLOAD_SIZE: usize = 262_144; // max payload size is 256k

View File

@ -1,18 +1,11 @@
use crate::component::ws::entities::{
Connect, Disconnect, Session, WSError, WSSessionId, WebSocketMessage,
};
use crate::component::ws::entities::{Connect, Disconnect, WSError, WebSocketMessage};
use actix::{Actor, Context, Handler};
use dashmap::DashMap;
pub struct WSServer {
sessions: DashMap<WSSessionId, Session>,
}
pub struct WSServer {}
impl std::default::Default for WSServer {
fn default() -> Self {
Self {
sessions: DashMap::new(),
}
Self {}
}
}
impl WSServer {
@ -32,17 +25,14 @@ impl Actor for WSServer {
impl Handler<Connect> for WSServer {
type Result = Result<(), WSError>;
fn handle(&mut self, msg: Connect, _ctx: &mut Context<Self>) -> Self::Result {
let session: Session = msg.into();
self.sessions.insert(session.id.clone(), session);
fn handle(&mut self, _msg: Connect, _ctx: &mut Context<Self>) -> Self::Result {
Ok(())
}
}
impl Handler<Disconnect> for WSServer {
type Result = Result<(), WSError>;
fn handle(&mut self, msg: Disconnect, _: &mut Context<Self>) -> Self::Result {
self.sessions.remove(&msg.sid);
fn handle(&mut self, _msg: Disconnect, _: &mut Context<Self>) -> Self::Result {
Ok(())
}
}