@@ -85,7 +85,7 @@ pub enum Error {
8585 #[ cfg( target_arch = "wasm32" ) ]
8686 #[ cfg_attr( docsrs, doc( cfg( target_arch = "wasm32" ) ) ) ]
8787 #[ error( "web_sys error" ) ]
88- WebSys ( #[ from] wasm:: WebSysError ) ,
88+ WebSys ( #[ from] wasm:: Error ) ,
8989
9090 /// Error during serialization/deserialization.
9191 #[ error( "serde_json error" ) ]
@@ -178,7 +178,7 @@ impl UpgradedRequestBuilder {
178178 let inner = native:: send_request ( self . inner , & self . protocols ) . await ?;
179179
180180 #[ cfg( target_arch = "wasm32" ) ]
181- let inner = wasm:: WebSysWebSocketStream :: new ( self . inner . build ( ) ?, & self . protocols ) . await ?;
181+ let inner = wasm:: WebSocket :: new ( self . inner . build ( ) ?, & self . protocols ) . await ?;
182182
183183 Ok ( UpgradeResponse {
184184 inner,
@@ -198,7 +198,7 @@ pub struct UpgradeResponse {
198198 inner : native:: WebSocketResponse ,
199199
200200 #[ cfg( target_arch = "wasm32" ) ]
201- inner : wasm:: WebSysWebSocketStream ,
201+ inner : wasm:: WebSocket ,
202202
203203 #[ allow( dead_code) ]
204204 protocols : Vec < String > ,
@@ -229,7 +229,7 @@ impl UpgradeResponse {
229229
230230 #[ cfg( target_arch = "wasm32" ) ]
231231 let ( inner, protocol) = {
232- let protocol = self . inner . protocol ( ) ;
232+ let protocol = self . inner . protocol ( ) . to_owned ( ) ;
233233 ( self . inner , Some ( protocol) )
234234 } ;
235235
@@ -252,7 +252,7 @@ pub struct WebSocket {
252252 inner : native:: WebSocketStream ,
253253
254254 #[ cfg( target_arch = "wasm32" ) ]
255- inner : wasm:: WebSysWebSocketStream ,
255+ inner : wasm:: WebSocket ,
256256
257257 protocol : Option < String > ,
258258}
@@ -283,7 +283,15 @@ impl WebSocket {
283283 }
284284
285285 #[ cfg( target_arch = "wasm32" ) ]
286- self . inner . close ( code. into ( ) , reason. unwrap_or_default ( ) ) ?;
286+ {
287+ let mut inner = self . inner ;
288+ inner
289+ . send ( Message :: Close {
290+ code,
291+ reason : reason. unwrap_or_default ( ) . to_owned ( ) ,
292+ } )
293+ . await ?;
294+ }
287295
288296 Ok ( ( ) )
289297 }
@@ -344,8 +352,22 @@ pub mod tests {
344352 #[ cfg( target_arch = "wasm32" ) ]
345353 wasm_bindgen_test:: wasm_bindgen_test_configure!( run_in_browser) ;
346354
355+ use crate :: { UpgradeResponse , UpgradedRequestBuilder } ;
356+
347357 use super :: { websocket, CloseCode , Message , RequestBuilderExt , WebSocket } ;
348358
359+ macro_rules! assert_send {
360+ ( $ty: ty) => {
361+ const _: ( ) = {
362+ struct Assert <T : Send >( std:: marker:: PhantomData <T >) ;
363+ Assert :: <$ty>( std:: marker:: PhantomData ) ;
364+ } ;
365+ } ;
366+ }
367+
368+ // unfortunately hyper IO is not sync
369+ assert_send ! ( WebSocket ) ;
370+
349371 async fn test_websocket ( mut websocket : WebSocket ) {
350372 let text = "Hello, World!" ;
351373 websocket
@@ -467,4 +489,10 @@ pub mod tests {
467489 assert_eq ! ( byte, 1001u16 ) ;
468490 assert_eq ! ( u16 :: from( text) , 1001u16 ) ;
469491 }
492+
493+ // assert that our types are Send + Sync
494+ trait AssertSendSync : Send + Sync { }
495+ impl AssertSendSync for UpgradedRequestBuilder { }
496+ impl AssertSendSync for UpgradeResponse { }
497+ impl AssertSendSync for WebSocket { }
470498}
0 commit comments