OnlineManager

Struct OnlineManager 

Source
pub struct OnlineManager { /* private fields */ }
Expand description

Online user manager 在线用户管理器

Manages online users and handles real-time message pushing 管理在线用户并处理实时消息推送

Implementations§

Source§

impl OnlineManager

Source

pub fn new() -> OnlineManager

Create a new online manager 创建新的在线管理器

§Example | 示例
let manager = OnlineManager::new();
Source

pub async fn register_pusher(&self, pusher: Arc<dyn MessagePusher>)

Register a message pusher 注册消息推送器

§Arguments | 参数
  • pusher - Message pusher implementation | 消息推送器实现
§Example | 示例
let pusher = Arc::new(MyCustomPusher::new());
manager.register_pusher(pusher).await;
Source

pub async fn mark_online(&self, user: OnlineUser)

Mark a user as online 标记用户上线

§Arguments | 参数
  • user - Online user information | 在线用户信息
§Example | 示例
let user = OnlineUser {
    login_id: "user123".to_string(),
    token: "token123".to_string(),
    device: "web".to_string(),
    connect_time: Utc::now(),
    last_activity: Utc::now(),
    metadata: HashMap::new(),
};
manager.mark_online(user).await;
Source

pub async fn mark_offline(&self, login_id: &str, token: &str)

Mark a specific user session as offline 标记特定用户会话离线

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
  • token - Session token to remove | 要移除的会话 Token
§Example | 示例
manager.mark_offline("user123", "token123").await;
Source

pub async fn mark_offline_all(&self, login_id: &str)

Mark all sessions of a user as offline 标记用户的所有会话离线

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
§Example | 示例
manager.mark_offline_all("user123").await;
Source

pub async fn is_online(&self, login_id: &str) -> bool

Check if a user is online 检查用户是否在线

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
§Returns | 返回值
  • true - User is online | 用户在线
  • false - User is offline | 用户离线
§Example | 示例
if manager.is_online("user123").await {
    println!("User is online");
}
Source

pub async fn get_online_count(&self) -> usize

Get online user count 获取在线用户数量

§Returns | 返回值

Number of online users | 在线用户数量

§Example | 示例
let count = manager.get_online_count().await;
println!("{} users online", count);
Source

pub async fn get_online_users(&self) -> Vec<String>

Get list of online user IDs 获取在线用户 ID 列表

§Returns | 返回值

Vector of login IDs | 登录 ID 向量

§Example | 示例
let users = manager.get_online_users().await;
for user_id in users {
    println!("User {} is online", user_id);
}
Source

pub async fn get_user_sessions(&self, login_id: &str) -> Vec<OnlineUser>

Get all sessions for a specific user 获取特定用户的所有会话

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
§Returns | 返回值

Vector of online user sessions | 在线用户会话向量

§Example | 示例
let sessions = manager.get_user_sessions("user123").await;
println!("User has {} active sessions", sessions.len());
Source

pub async fn update_activity(&self, login_id: &str, token: &str)

Update user activity timestamp 更新用户活跃时间戳

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
  • token - Session token | 会话 Token
§Example | 示例
manager.update_activity("user123", "token123").await;
Source

pub async fn push_to_user( &self, login_id: &str, content: String, ) -> Result<(), SaTokenError>

Push a text message to a specific user 向特定用户推送文本消息

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
  • content - Message content | 消息内容
§Example | 示例
manager.push_to_user("user123", "Hello!".to_string()).await?;
Source

pub async fn push_to_users( &self, login_ids: Vec<String>, content: String, ) -> Result<(), SaTokenError>

Push a message to multiple users 向多个用户推送消息

§Arguments | 参数
  • login_ids - List of user login IDs | 用户登录 ID 列表
  • content - Message content | 消息内容
§Example | 示例
let users = vec!["user1".to_string(), "user2".to_string()];
manager.push_to_users(users, "Broadcast!".to_string()).await?;
Source

pub async fn broadcast(&self, content: String) -> Result<(), SaTokenError>

Broadcast a message to all online users 向所有在线用户广播消息

§Arguments | 参数
  • content - Message content | 消息内容
§Example | 示例
manager.broadcast("System maintenance in 5 minutes".to_string()).await?;
Source

pub async fn push_message_to_user( &self, login_id: &str, message: PushMessage, ) -> Result<(), SaTokenError>

Push a custom message to a user 向用户推送自定义消息

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
  • message - Custom push message | 自定义推送消息
§Example | 示例
let message = PushMessage {
    message_id: uuid::Uuid::new_v4().to_string(),
    content: "Custom content".to_string(),
    message_type: MessageType::Custom("event".to_string()),
    timestamp: Utc::now(),
    metadata: HashMap::new(),
};
manager.push_message_to_user("user123", message).await?;
Source

pub async fn kick_out_notify( &self, login_id: &str, reason: String, ) -> Result<(), SaTokenError>

Kick out a user and send notification 踢出用户并发送通知

§Arguments | 参数
  • login_id - User login ID | 用户登录 ID
  • reason - Kick-out reason | 踢出原因
§Example | 示例
manager.kick_out_notify("user123", "Duplicate login detected".to_string()).await?;

Trait Implementations§

Source§

impl Default for OnlineManager

Source§

fn default() -> OnlineManager

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more