Skip to content

Commit 6ac55ac

Browse files
Merge pull request snapview#37 from bluetech/wsstream-without-handshake
Allow constructing WebSocketStream without performing a handshake
2 parents ad8aa4c + 0db773a commit 6ac55ac

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

src/lib.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ use tokio_io::{AsyncRead, AsyncWrite};
3434
use tungstenite::handshake::client::{ClientHandshake, Response, Request};
3535
use tungstenite::handshake::server::{ServerHandshake, Callback, NoCallback};
3636
use tungstenite::handshake::{HandshakeRole, HandshakeError};
37-
use tungstenite::protocol::{WebSocket, Message};
37+
use tungstenite::protocol::{WebSocket, Message, Role};
3838
use tungstenite::error::Error as WsError;
3939
use tungstenite::server;
4040

@@ -113,6 +113,22 @@ pub struct WebSocketStream<S> {
113113
inner: WebSocket<S>,
114114
}
115115

116+
impl<S> WebSocketStream<S> {
117+
/// Convert a raw socket into a WebSocketStream without performing a
118+
/// handshake.
119+
pub fn from_raw_socket(stream: S, role: Role) -> Self {
120+
let ws = WebSocket::from_raw_socket(stream, role);
121+
WebSocketStream { inner: ws }
122+
}
123+
124+
/// Convert a raw socket into a WebSocketStream without performing a
125+
/// handshake.
126+
pub fn from_partially_read(stream: S, part: Vec<u8>, role: Role) -> Self {
127+
let ws = WebSocket::from_partially_read(stream, part, role);
128+
WebSocketStream { inner: ws }
129+
}
130+
}
131+
116132
impl<T> Stream for WebSocketStream<T> where T: AsyncRead + AsyncWrite {
117133
type Item = Message;
118134
type Error = WsError;

0 commit comments

Comments
 (0)