diff --git a/server/stat/src/main.rs b/server/stat/src/main.rs index be0f693..78057ae 100755 --- a/server/stat/src/main.rs +++ b/server/stat/src/main.rs @@ -32,7 +32,8 @@ const MAX_PACKET_LEN: usize = 1024 * 64; struct MyWs { recv_buf_len: usize, recv_buf: BytesMut, - send_queue: Arc>>>, + //send_queue: Arc>>>, + send_queue: Arc>>>, } impl Actor for MyWs { @@ -71,14 +72,30 @@ impl MyWs { ((self.recv_buf[7] as i32) << 16)+ ((self.recv_buf[7] as i32) << 24); let magic_code = (self.recv_buf[8] as u16)+ ((self.recv_buf[9] as u16) << 8); let ext_len = (self.recv_buf[10] as u16)+ ((self.recv_buf[11] as u16) << 8); - let a = 30; + let mut tmp_bytes = BytesMut::with_capacity((pack_len + 16) as usize); + { + tmp_bytes.put_u16(pack_len); + tmp_bytes.put_u16(msg_id); + tmp_bytes.put_i32(seq_id); + tmp_bytes.put_u16(magic_code); + tmp_bytes.put_u16(ext_len); + tmp_bytes.put_i32(0); + for i in 16..tmp_bytes.capacity() { + tmp_bytes.put_i8(0); + } + tmp_bytes[16 .. (16 + pack_len as usize)].copy_from_slice(&bin[12..(12 + pack_len as usize)]); + } + { + Arc::downgrade(&mut self.send_queue).upgrade().unwrap().lock().unwrap().borrow_mut().push(tmp_bytes); + } + offset += (pack_len as usize) + 12; } if pre_offect >= offset || offset >= self.recv_buf_len { break; } }//end while if offset > 0 && offset < self.recv_buf_len { - //self.recv_buf[..0].copy_from_slice(&bin); + self.recv_buf[..0].copy_from_slice(&bin); } } } @@ -101,7 +118,7 @@ impl StreamHandler> for MyWs { Ok(ws::Message::Text(text)) => ctx.text(text), Ok(ws::Message::Binary(bin)) => { ///Arc::downgrade(&mut self.send_queue).upgrade().unwrap().lock().unwrap().borrow_mut().push(bin.clone()); - //println!("recv_buf:{0}", bin.len()); + println!("recv_buf:{0}", bin.len()); //ctx.binary(bin); //self.down_stream.write_all(&bin); self.parse_pkt(&bin);