wae-websocket 0.0.0

WAE WebSocket - WebSocket 服务,支持 tokio-tungstenite
Documentation

wae-websocket

WebSocket 模块 - 提供实时通信抽象层。

主要功能

  • 服务端/客户端: 统一的 WebSocket API
  • 房间管理: 支持房间广播
  • 连接管理: 连接状态跟踪
  • 自动重连: 客户端断线重连
  • 心跳检测: 保持连接活跃

技术栈

  • WebSocket: tokio-tungstenite
  • 异步运行时: Tokio
  • 序列化: serde

服务端示例

use wae_websocket::{WebSocketServer, ServerConfig, ClientHandler, Connection, Message};

struct MyHandler;


impl ClientHandler for MyHandler {
    async fn on_connect(&self, conn: &Connection) -> Result<()> {
        println!("客户端连接: {}", conn.id);
        Ok(())
    }
    
    async fn on_message(&self, conn: &Connection, msg: Message) -> Result<()> {
        println!("收到消息: {:?}", msg);
        Ok(())
    }
    
    async fn on_disconnect(&self, conn: &Connection) {
        println!("客户端断开: {}", conn.id);
    }
}

#[tokio::main]
async fn main() {
    let server = WebSocketServer::new(ServerConfig {
        port: 8080,
        max_connections: 1000,
        ..Default::default()
    });
    
    server.start(MyHandler).await?;
}

客户端示例

use wae_websocket::{WebSocketClient, ClientConfig, Message};

#[tokio::main]
async fn main() {
    let mut client = WebSocketClient::new(ClientConfig::new("ws://localhost:8080"));
    
    client.send_text("Hello, Server!").await?;
    
    while let Some(msg) = client.receive().await {
        println!("收到: {:?}", msg);
    }
}

房间广播

let server = WebSocketServer::new(config);

server.room_manager().join("room-1", "conn-001").await;
server.broadcast_to_room("room-1", Message::text("大家好")).await?;