summaryrefslogtreecommitdiff
path: root/extensions/websocket/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/websocket/lib.rs')
-rw-r--r--extensions/websocket/lib.rs32
1 files changed, 9 insertions, 23 deletions
diff --git a/extensions/websocket/lib.rs b/extensions/websocket/lib.rs
index 8dfa26c47..0da8d4911 100644
--- a/extensions/websocket/lib.rs
+++ b/extensions/websocket/lib.rs
@@ -35,7 +35,6 @@ use std::rc::Rc;
use std::sync::Arc;
use tokio::net::TcpStream;
use tokio_rustls::{rustls::ClientConfig, TlsConnector};
-use tokio_tungstenite::tungstenite::Error as TungsteniteError;
use tokio_tungstenite::tungstenite::{
handshake::client::Response, protocol::frame::coding::CloseCode,
protocol::CloseFrame, Message,
@@ -110,10 +109,9 @@ pub struct CreateArgs {
#[derive(Serialize)]
#[serde(rename_all = "camelCase")]
pub struct CreateResponse {
- success: bool,
- rid: Option<ResourceId>,
- protocol: Option<String>,
- extensions: Option<String>,
+ rid: ResourceId,
+ protocol: String,
+ extensions: String,
}
pub async fn op_ws_create<WP>(
@@ -152,18 +150,7 @@ where
_ => unreachable!(),
});
let addr = format!("{}:{}", domain, port);
- let try_socket = TcpStream::connect(addr).await;
- let tcp_socket = match try_socket.map_err(TungsteniteError::Io) {
- Ok(socket) => socket,
- Err(_) => {
- return Ok(CreateResponse {
- success: false,
- rid: None,
- protocol: None,
- extensions: None,
- })
- }
- };
+ let tcp_socket = TcpStream::connect(addr).await?;
let socket: MaybeTlsStream<TcpStream> = match uri.scheme_str() {
Some("ws") => MaybeTlsStream::Plain(tcp_socket),
@@ -215,10 +202,9 @@ where
.map(|header| header.to_str().unwrap())
.collect::<String>();
Ok(CreateResponse {
- success: true,
- rid: Some(rid),
- protocol: Some(protocol.to_string()),
- extensions: Some(extensions),
+ rid,
+ protocol: protocol.to_string(),
+ extensions,
})
}
@@ -293,7 +279,7 @@ pub enum NextEventResponse {
Close { code: u16, reason: String },
Ping,
Pong,
- Error,
+ Error(String),
Closed,
}
@@ -324,7 +310,7 @@ pub async fn op_ws_next_event(
},
Some(Ok(Message::Ping(_))) => NextEventResponse::Ping,
Some(Ok(Message::Pong(_))) => NextEventResponse::Pong,
- Some(Err(_)) => NextEventResponse::Error,
+ Some(Err(e)) => NextEventResponse::Error(e.to_string()),
None => {
state.borrow_mut().resource_table.close(rid).unwrap();
NextEventResponse::Closed