`
This commit is contained in:
parent
f9053e8740
commit
e060e11542
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user