[−][src]Crate romp
Romp
romp
is a messaging server that uses the STOMP protocol, and STOMP over WebSockets.
romp
can run as a standalone server, hosting queues and/or topics to which clients can subscribe or
send messages. It can also host bespoke filters (handlers) to programmatically respond to incoming messages.
This enables romp servers to act as app servers, using asynchronous messaging model.
Custom filters can be added as follow...
// Filter structs have an init() method use romp::bootstrap::romp_bootstrap; use romp::workflow::filter::ping::PingFilter; use romp::prelude::{romp_stomp_filter, romp_http_filter, romp_stomp, romp_http}; use romp::workflow::filter::http::hello::HelloFilter; use romp::message::response::{get_response_ok, get_http_ok_msg}; use std::sync::Arc; romp_stomp_filter(Box::new(PingFilter {})); // Http Filter structs different error handling romp_http_filter(Box::new(HelloFilter {})); // STOMP filters can be written as closures romp_stomp(|ctx, msg| { if let Some(hdr) = msg.get_header("special-header") { let mut session = ctx.session.write().unwrap(); session.send_message(get_response_ok("howdy".to_string())); return Ok(true); } Ok(false) }); // as can HTTP filters romp_http(|ctx, msg| { if "/pingerooni".eq(ctx.attributes.get("romp.uri").unwrap()) { let mut session = ctx.session.write().unwrap(); session.send_message(Arc::new(get_http_ok_msg())); return Ok(true); } Ok(false) }); // Then bootstrap the server, this is commented out in the docs, because of some bug in the cargo test when this comment is uncommented. // There is no bug in the code below its used like that in main.rs that compiles. // tokio::run(bootstrap_romp());
Modules
body_parser | Code related to parsing STOMP message bodies, either fixed |
bootstrap | Bootstrapping, i.e. initializing, a |
config | Configuration code, for parsing server config |
downstream | upstream/downstream features i.e. handling MESSAGE requests for a downstream "edge" server. i.e. xtomp.
Upstream STOMP servers should CONNECT to a downstream SUBSCRIBE to |
errors | Common error definitions returned by the |
init | Contains global objects started during bootstrap, this is principally the |
message | STOMP message representation and utils for generating responses and serialing STOMP messages. |
parser | STOMP protocol push parser, parses command and headers, not the body. |
persist | Persistence of received STOMP messages. |
prelude | A "prelude" for users of the |
session | Code related to maintenance of the underlying TCP connection. |
system | Linux specifics. |
util | Utility methods. |
web_socket | HTTP WebSockets protocol parsers and related functions. |
workflow | Workflow concerns application logic, either in built STOMP message handling, admin functions or bespoke application specific functions. |