feat: message payload
This commit is contained in:
parent
5a7e223b99
commit
db498ef5e8
|
|
@ -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)) => {
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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(())
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue