From 9ba719a9ea2de9d4f2f91b05b2d6c6e66b5f81bf Mon Sep 17 00:00:00 2001 From: huangzhe <3451701311@qq.com> Date: Tue, 29 Jul 2025 12:40:40 +0800 Subject: [PATCH] =?UTF-8?q?feat=20:=20=E5=86=85=E5=AE=B9=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/gotify-ws/Cargo.toml | 2 ++ packages/gotify-ws/src/main.rs | 24 +++++++++++++++++++++++- packages/gotify-ws/src/model/mod.rs | 1 + packages/gotify-ws/src/model/ws.rs | 9 +++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 packages/gotify-ws/src/model/mod.rs create mode 100644 packages/gotify-ws/src/model/ws.rs diff --git a/packages/gotify-ws/Cargo.toml b/packages/gotify-ws/Cargo.toml index 0b2ea66..9560bfd 100644 --- a/packages/gotify-ws/Cargo.toml +++ b/packages/gotify-ws/Cargo.toml @@ -7,5 +7,7 @@ edition = "2024" env_logger = "0.11.8" futures = "0.3.31" log = "0.4.27" +serde = { version = "1.0.219", features = ["derive"] } +serde_json = "1.0.133" tokio = { version = "1.47.0", features = ["full"] } tokio-tungstenite = { version = "0.27.0", features = ["native-tls"] } diff --git a/packages/gotify-ws/src/main.rs b/packages/gotify-ws/src/main.rs index 62ca78d..ae3cec1 100644 --- a/packages/gotify-ws/src/main.rs +++ b/packages/gotify-ws/src/main.rs @@ -1,9 +1,12 @@ mod utils; +mod model; use futures::StreamExt; use log::info; +use serde_json; use tokio_tungstenite::connect_async; use utils::logger; +use crate::model::ws::WsMessage; #[tokio::main] async fn main() { @@ -16,7 +19,26 @@ async fn main() { let (_, mut read) = stream.split(); while let Some(msg) = read.next().await { - info!("Received message: {msg:?}"); + match msg { + Ok(tokio_tungstenite::tungstenite::Message::Text(text)) => { + info!("Received text message: {}", text); + match serde_json::from_str::(&text) { + Ok(ws_msg) => { + info!("Parsed message: {ws_msg:?}"); + } + Err(e) => { + info!("Failed to parse message: {e}"); + } + } + } + Ok(other_msg) => { + info!("Received non-text message: {other_msg:?}"); + } + Err(e) => { + info!("Error receiving message: {e}"); + break; + } + } } } Err(e) => { diff --git a/packages/gotify-ws/src/model/mod.rs b/packages/gotify-ws/src/model/mod.rs new file mode 100644 index 0000000..b5da5ee --- /dev/null +++ b/packages/gotify-ws/src/model/mod.rs @@ -0,0 +1 @@ +pub mod ws; \ No newline at end of file diff --git a/packages/gotify-ws/src/model/ws.rs b/packages/gotify-ws/src/model/ws.rs new file mode 100644 index 0000000..e122233 --- /dev/null +++ b/packages/gotify-ws/src/model/ws.rs @@ -0,0 +1,9 @@ +#[derive(Debug, serde::Deserialize)] +pub struct WsMessage { + id: u64, + appid: u64, + message: String, + title: String, + priority: u64, + date: String, +}