actix-web/actix-web-actors
Huston Bokinsky 9d7b6f401d Hide continuation frames from application layer.
This commit asserts that continuation frames are an implementation
detail of the websocket layer, and should remain hidden from the
application layer.  That is:
  - a codec should write only frames to the wire, and read only frames from the wire
  - when sending messages, the websocket implementation should break large
    text and binary messages into continuation frames -- the application should
    not have to be aware of this.
  - when receiving messages, the websocket implementation should reconstitute
    continuation frames into their original messages -- the application should
    not have to handle this.
  - the application should only have to send and receive complete websocket messages

Here, the reconstitution of continuation frames into their original messages is
done by the Stream implementation of actix_web_actors::ws::WsStream, by adding
a continuation frame buffer and not issuing a Poll::Ready(Some(Ok)) result until
a complete message has been buffered.  A test in actix_web_actors::tests::test_ws.rs
checks this.

The breaking of large message payloads into sequential continuation frames is
done by the addition of an actix_http::ws::frame_iters module, which introduces
two structs ContinuationBins and ContinuationTexts.  These are iterators over
either single Frame::Binary or Frame::Text frames, if the payloads are small,
or over sequences of Frame::Continuation's with appropriate Items FirstBinary/FirstText,
Continue, and Last.  New tests in actix_http::ws::frame_iters verify this
functionality.
2020-04-19 22:32:28 -07:00
..
src Hide continuation frames from application layer. 2020-04-19 22:32:28 -07:00
tests Hide continuation frames from application layer. 2020-04-19 22:32:28 -07:00
CHANGES.md update changes 2019-12-20 17:59:34 +06:00
Cargo.toml Update `actix-web` dependency to 3.0.0-alpha.1 2020-03-12 03:03:50 +09:00
LICENSE-APACHE add license files 2019-06-01 17:25:29 +06:00
LICENSE-MIT add license files 2019-06-01 17:25:29 +06:00
README.md update readmes 2019-04-29 20:47:21 -07:00

README.md

Actix actors support for actix web framework Build Status codecov crates.io Join the chat at https://gitter.im/actix/actix

Documentation & community resources