This commit is contained in:
azw 2024-05-06 07:19:55 +08:00
parent f9053e8740
commit e060e11542

View File

@ -32,7 +32,8 @@ const MAX_PACKET_LEN: usize = 1024 * 64;
struct MyWs {
recv_buf_len: usize,
recv_buf: BytesMut,
send_queue: Arc<Mutex<RefCell<Vec::<actix_web::web::Bytes>>>>,
//send_queue: Arc<Mutex<RefCell<Vec::<actix_web::web::Bytes>>>>,
send_queue: Arc<Mutex<RefCell<Vec::<BytesMut>>>>,
}
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<Result<ws::Message, ws::ProtocolError>> 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);