diff options
Diffstat (limited to 'ext/websocket')
-rw-r--r-- | ext/websocket/lib.rs | 28 |
1 files changed, 17 insertions, 11 deletions
diff --git a/ext/websocket/lib.rs b/ext/websocket/lib.rs index 5ac1f0197..81f358dd2 100644 --- a/ext/websocket/lib.rs +++ b/ext/websocket/lib.rs @@ -365,7 +365,7 @@ impl ServerWebSocket { pub async fn write_frame( self: &Rc<Self>, lock: AsyncMutFuture<()>, - frame: Frame, + frame: Frame<'_>, ) -> Result<(), AnyError> { lock.await; @@ -401,7 +401,6 @@ pub fn ws_create_server_stream( ws.set_writev(*USE_WRITEV); ws.set_auto_close(true); ws.set_auto_pong(true); - let rid = state.resource_table.add(ServerWebSocket::new(ws)); Ok(rid) } @@ -415,7 +414,7 @@ pub fn op_ws_send_binary(state: &mut OpState, rid: ResourceId, data: &[u8]) { let lock = resource.reserve_lock(); deno_core::task::spawn(async move { if let Err(err) = resource - .write_frame(lock, Frame::new(true, OpCode::Binary, None, data)) + .write_frame(lock, Frame::new(true, OpCode::Binary, None, data.into())) .await { resource.set_error(Some(err.to_string())); @@ -435,7 +434,7 @@ pub fn op_ws_send_text(state: &mut OpState, rid: ResourceId, data: String) { if let Err(err) = resource .write_frame( lock, - Frame::new(true, OpCode::Text, None, data.into_bytes()), + Frame::new(true, OpCode::Text, None, data.into_bytes().into()), ) .await { @@ -460,7 +459,7 @@ pub async fn op_ws_send_binary_async( let data = data.to_vec(); let lock = resource.reserve_lock(); resource - .write_frame(lock, Frame::new(true, OpCode::Binary, None, data)) + .write_frame(lock, Frame::new(true, OpCode::Binary, None, data.into())) .await } @@ -479,11 +478,13 @@ pub async fn op_ws_send_text_async( resource .write_frame( lock, - Frame::new(true, OpCode::Text, None, data.into_bytes()), + Frame::new(true, OpCode::Text, None, data.into_bytes().into()), ) .await } +const EMPTY_PAYLOAD: &[u8] = &[]; + #[op(fast)] pub fn op_ws_get_buffered_amount(state: &mut OpState, rid: ResourceId) -> u32 { state @@ -504,7 +505,9 @@ pub async fn op_ws_send_pong( .resource_table .get::<ServerWebSocket>(rid)?; let lock = resource.reserve_lock(); - resource.write_frame(lock, Frame::pong(vec![])).await + resource + .write_frame(lock, Frame::pong(EMPTY_PAYLOAD.into())) + .await } #[op] @@ -518,7 +521,10 @@ pub async fn op_ws_send_ping( .get::<ServerWebSocket>(rid)?; let lock = resource.reserve_lock(); resource - .write_frame(lock, Frame::new(true, OpCode::Ping, None, vec![])) + .write_frame( + lock, + Frame::new(true, OpCode::Ping, None, EMPTY_PAYLOAD.into()), + ) .await } @@ -535,7 +541,7 @@ pub async fn op_ws_close( .get::<ServerWebSocket>(rid)?; let frame = reason .map(|reason| Frame::close(code.unwrap_or(1005), reason.as_bytes())) - .unwrap_or_else(|| Frame::close_raw(vec![])); + .unwrap_or_else(|| Frame::close_raw(vec![].into())); resource.closed.set(true); let lock = resource.reserve_lock(); @@ -602,7 +608,7 @@ pub async fn op_ws_next_event( }; break match val.opcode { - OpCode::Text => match String::from_utf8(val.payload) { + OpCode::Text => match String::from_utf8(val.payload.to_vec()) { Ok(s) => { resource.string.set(Some(s)); MessageKind::Text as u16 @@ -613,7 +619,7 @@ pub async fn op_ws_next_event( } }, OpCode::Binary => { - resource.buffer.set(Some(val.payload)); + resource.buffer.set(Some(val.payload.to_vec())); MessageKind::Binary as u16 } OpCode::Close => { |