I just released ws_stream_wasm. This crate builds a idiomatic convenience layer in front of web_sys::WebSocket which is unwieldy to use in it's raw form. You can now comfortably use websockets in rust WASM.
The crate also provides a futures 0.3 Sink/Stream for websocket messages and it provides AsyncRead/AsyncWrite, which allows framing the websocket connection with arbitrary codecs.
The examples directory is a bit empty right now, but there is extensive integration tests covering all features of the library. I will add a chat example when I can make time.
Note that there is no server websocket crate that provides AsyncRead/AsyncWrite at the moment. I'm developing a sister crate called ws_stream for that, but it's not ready for publication on crates.io. I won't be available for programming next week, but I plan to wrap up ws_stream the first week of August. In the mean time it is functional, eg for running the integration tests from ws_stream_wasm, and can be cloned from github, but there will be most likely breaking changes before release.
This allows communication to WASM of any systems that work on AsyncRead/AsyncWrite. I'm working on an actor library which has remote actors functionning in this way. As soon as I have time to connect it all together this will mean remote actors in the browser that communicate with servers in exactly the same way other processes will be able to exchange actor messages over any AsyncRead/Write.
update: futures-codec is fixed, and ci tests are passing