Skip to main content

Crate zerodds_websocket_bridge

Crate zerodds_websocket_bridge 

Source
Expand description

Crate zerodds-websocket-bridge. Safety classification: STANDARD.

Complete WebSocket (RFC 6455) stack set — pure-Rust no_std + alloc, forbid(unsafe_code). Implements the full WebSocket spec including the base framing protocol (§5.2 + §5.3), opening handshake (§4) with Sec-WebSocket-Accept SHA1 computation, extension + subprotocol negotiation (§9), close-frame status code semantics (§7.4) incl. forbidden-on-wire checking, the permessage-deflate extension (RFC 7692), a URI parser (ws:// / wss://, RFC 6455 §3), a streaming UTF-8 validator (§8.1) for text frames, as well as a WebSocket↔DDS topic bridge.

Spec-Referenzen:

  • RFC 6455 — The WebSocket Protocol.
  • RFC 7692 — Compression Extensions for WebSocket (permessage-deflate).

§Layer position

Layer 5 — bridges. Substrate for browser↔DDS endpoint mapping (web UIs, realtime dashboards, DDS web gateway).

§Public API (Stand 1.0.0-rc.1)

§Example

use zerodds_websocket_bridge::{compute_accept};

// RFC 6455 §1.3: Sec-WebSocket-Accept example.
let accept = compute_accept("dGhlIHNhbXBsZSBub25jZQ==");
assert_eq!(accept, "s3pPLMBiTxaQ9kYGzzhZRbK+xOo=");

Re-exports§

pub use close::CloseCode;
pub use close::ClosePayload;
pub use close::decode_close_payload;
pub use close::encode_close_payload;
pub use codec::CodecError;
pub use codec::decode;
pub use codec::encode;
pub use dds_bridge::BridgeError;
pub use dds_bridge::BridgeOp;
pub use dds_bridge::Notification;
pub use dds_bridge::SubscriptionRegistry;
pub use dds_bridge::parse_op;
pub use dds_bridge::render_notification;
pub use frame::Frame;
pub use frame::Opcode;
pub use handshake::ClientHandshake;
pub use handshake::HandshakeError;
pub use handshake::ServerHandshake;
pub use handshake::build_server_response;
pub use handshake::compute_accept;
pub use handshake::parse_client_request;
pub use handshake::render_server_response;
pub use masking::ClosureMaskingKeyProvider;
pub use masking::InsecureSplitmixProvider;
pub use masking::MaskingKeyProvider;
pub use masking::apply_mask;
pub use masking::generate_masking_key;
pub use permessage_deflate::DEFLATE_TAIL;
pub use permessage_deflate::NegotiationError;
pub use permessage_deflate::PermessageDeflateParams;
pub use permessage_deflate::append_tail;
pub use permessage_deflate::parse_offer;
pub use permessage_deflate::render_accept;
pub use permessage_deflate::strip_tail;
pub use uri::UriError;
pub use uri::WebSocketUri;
pub use uri::default_port;
pub use uri::is_local_loopback;
pub use uri::parse_websocket_uri;
pub use uri::resource_name;
pub use utf8::StreamingValidator;
pub use utf8::Utf8Error;
pub use utf8::validate as validate_utf8;

Modules§

close
Close-frame status codes — RFC 6455 §7.4.
codec
WebSocket wire codec — RFC 6455 §5.2 + §5.3.
daemon
zerodds-ws-bridged daemon implementation.
dds_bridge
WebSocket↔DDS topic bridge.
frame
WebSocket frame model — RFC 6455 §5.2.
handshake
WebSocket opening handshake — RFC 6455 §4.
masking
WebSocket payload masking — RFC 6455 §5.3.
message
Message layer (§6.1 send algorithm + §6.2 receive algorithm).
negotiation
Generic extension and subprotocol negotiation per RFC 6455 §9.
permessage_deflate
permessage-deflate extension — RFC 7692 §7.
uri
WebSocket URI scheme parser per RFC 6455 §3.
utf8
UTF-8 validation per RFC 6455 §8.1 + §8.2.