Closed pymongo closed 12 months ago
my server is axum 0.6, client is ws-tool, When I update from 0.7 to 0.9, axum ws server receiver wired nul/zero bytes array
&msg = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" thread 'manage' panicked at ': Error("expected value", line: 1, column: 1)'
async fn kernel_ws_socket_handler(socket: axum::extract::ws::WebSocket, ctx: AppContext, kernel_info: KernelInfo) { let (mut ws_write, mut ws_read) = socket.split(); loop { tokio::select! { msg_res_opt = ws_read.next() => { let msg_res = match msg_res_opt { Some(msg_res) => msg_res, None => { tracing::warn!("EOF"); break; } }; let msg = match msg_res { Ok(msg) => msg, Err(err) => { // e.g. Protocol(ResetWithoutClosingHandshake) tracing::error!("kernel disconnect! {err}"); break; } }; let msg = match msg { Message::Text(msg) => { msg }, Message::Ping(_) => { if ws_write.send(Message::Pong(Vec::new())).await.is_err() { tracing::error!("send pong back fail! break"); break; } continue; } Message::Close(_) => break, _ => continue, }; dbg!(msg.is_empty()); dbg!(&msg); let msg = serde_json::from_str::<Message>(&msg).expect(&msg); // let msg = kernel_msg::Message::from_json(&msg.bytes().to_vec()); rsp_tx.send(msg).unwrap(); } } }
client:
let socket= ws_tool::ClientBuilder::new() .connect(url.parse().expect(&url), StringCodec::check_fn) .unwrap(); let (mut ws_r, mut ws_w) = socket.split(); //... let rsp = serde_json::to_string(&rsp).unwrap(); if let Err(err) = ws_w.send(rsp) { error!("{err}"); }
I rollback from 0.9 to 0.7 and works ok
ws-tool 0.9 version has been yanked, so closed issue
my server is axum 0.6, client is ws-tool, When I update from 0.7 to 0.9, axum ws server receiver wired nul/zero bytes array
client:
I rollback from 0.9 to 0.7 and works ok