az-remote-model
自动收集自
crates/core/az-remote-model/README.md。
远程桌面控制的协议数据模型定义库,涵盖设备描述、会话管理、输入事件、视频帧、文件传输和剪贴板同步等全部数据类型。
功能
DeviceDescriptor:设备信息描述(ID、名称、平台、角色、能力、在线状态)SessionRequest/SessionGrant/SessionSummary:会话建立与状态管理全流程RemoteInputEvent:远程输入事件(鼠标移动/点击/滚轮、键盘按键、文本输入)VideoFrameEnvelope:视频帧信封,支持 JPEG/PNG 编码,含序列号与时间戳FileTransferEnvelope:分块文件传输信封ClipboardPayload:剪贴板文本同步载荷RemotePlatform:支持 macOS、Windows、Linux (X11/Wayland)、Browser 五种平台DeviceRole:Host(被控端)与 Viewer(控制端)角色区分- 所有类型均实现
Serialize/Deserialize,可直接用于 JSON 消息交换
安装
在 Cargo.toml 中添加:
[dependencies]
az-remote-model = { path = "../az-remote-model" } # workspace 内部引用
# 或发布后:
# az-remote-model = "0.1" # crates.io 引用
用法
use az_remote_model::*;
use chrono::Utc;
use uuid::Uuid;
// 描述一台设备
let device = DeviceDescriptor {
device_id: Uuid::new_v4(),
device_name: "MacBook Pro".into(),
platform: RemotePlatform::MacOs,
role: DeviceRole::Host,
capabilities: SessionCapability::full_host(),
online_status: OnlineStatus::Online,
last_seen_at: Utc::now(),
notes: None,
};
// 构造会话请求
let request = SessionRequest {
session_id: Uuid::new_v4(),
viewer_id: Uuid::new_v4(),
host_id: device.device_id,
capability: SessionCapability::web_viewer(),
requested_at: Utc::now(),
};
// 发送输入事件
let event = RemoteInputEvent::PointerMove { x: 100, y: 200 };
let json = serde_json::to_string(&event).unwrap();
依赖的 crates
chrono— 日期时间类型(DateTime<Utc>)serde/serde_json— JSON 序列化与反序列化uuid— 设备/会话/传输的唯一标识符