next_web_websocket/core/
handler.rs1use std::error::Error;
2
3use axum::extract::ws::{CloseFrame, Message};
4use next_web_core::async_trait;
5
6use super::session::WebSocketSession;
7
8pub type Result<T> = std::result::Result<T, Box<dyn Error + Send + Sync>>;
10
11#[async_trait]
13pub trait WebSocketHandler: Send + Sync {
14 fn paths(&self) -> Vec<&'static str>;
16
17 async fn on_open(&self, session: &WebSocketSession) -> Result<()>;
19
20 async fn on_message(&self, session: &WebSocketSession, message: Message) -> Result<()>;
22
23 async fn on_error(
25 &self,
26 session: &WebSocketSession,
27 error: Box<dyn Error + Send + Sync>,
28 ) -> Result<()>;
29
30 async fn on_close(&self, session: &WebSocketSession, close: Option<CloseFrame>) -> Result<()>;
32}