mirror of https://github.com/fafhrd91/actix-web
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. |
||
---|---|---|
.. | ||
src | ||
tests | ||
CHANGES.md | ||
Cargo.toml | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
README.md
Actix actors support for actix web framework
Documentation & community resources
- API Documentation
- Chat on gitter
- Cargo package: actix-web-actors
- Minimum supported Rust version: 1.33 or later