@@ -34,7 +34,7 @@ use tokio_io::{AsyncRead, AsyncWrite};
34
34
use tungstenite:: handshake:: client:: { ClientHandshake , Response , Request } ;
35
35
use tungstenite:: handshake:: server:: { ServerHandshake , Callback , NoCallback } ;
36
36
use tungstenite:: handshake:: { HandshakeRole , HandshakeError } ;
37
- use tungstenite:: protocol:: { WebSocket , Message } ;
37
+ use tungstenite:: protocol:: { WebSocket , Message , Role } ;
38
38
use tungstenite:: error:: Error as WsError ;
39
39
use tungstenite:: server;
40
40
@@ -113,6 +113,22 @@ pub struct WebSocketStream<S> {
113
113
inner : WebSocket < S > ,
114
114
}
115
115
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
+
116
132
impl < T > Stream for WebSocketStream < T > where T : AsyncRead + AsyncWrite {
117
133
type Item = Message ;
118
134
type Error = WsError ;
0 commit comments