Skip to main content

Crate zerodds_websocket_bridge

Crate zerodds_websocket_bridge 

Source
Expand description

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

WebSocket (RFC 6455) komplettes Stack-Set — pure-Rust no_std + alloc, forbid(unsafe_code). Implementiert die volle WebSocket- Spec inklusive Base-Framing-Protocol (§5.2 + §5.3), Opening- Handshake (§4) mit Sec-WebSocket-Accept-SHA1-Berechnung, Extension- + Subprotocol-Negotiation (§9), Close-Frame-Status- Code-Semantik (§7.4) inkl. Forbidden-on-Wire-Pruefung, permessage-deflate Extension (RFC 7692), URI-Parser (ws:// / wss://, RFC 6455 §3), Streaming-UTF-8-Validator (§8.1) fuer Text-Frames, sowie einen WebSocket↔DDS-Topic-Bridge.

Spec-Referenzen:

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

§Schichten-Position

Layer 5 — Bridges. Substrat fuer Browser↔DDS-Endpoint-Mapping (Web-UIs, Realtime-Dashboards, DDS-Web-Gateway).

§Public API (Stand 1.0.0-rc.1)

§Beispiel

use zerodds_websocket_bridge::{compute_accept};

// RFC 6455 §1.3: Sec-WebSocket-Accept-Beispiel.
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 Modell — 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- und Subprotocol-Negotiation nach RFC 6455 §9.
permessage_deflate
permessage-deflate Extension — RFC 7692 §7.
uri
WebSocket URI-Scheme-Parser nach RFC 6455 §3.
utf8
UTF-8 Validation nach RFC 6455 §8.1 + §8.2.