.TH "doc_decisions_pubsub_md" 3elektra "Sun May 29 2016" "Version 0.8.14" "Elektra" \" -*- nroff -*- .ad l .nh .SH NAME doc_decisions_pubsub_md \- Pub/Sub Communication .SS "Issue" .PP To develop a \fCWeb UI\fP, we need to be able to remotely configure Elektra via a network socket\&. .PP The idea is to use a Pub/Sub concept to synchronize actions which describe changes in the Elektra state\&. .PP .SS "Constraints" .PP .IP "\(bu" 2 We need to be able to synchronize all changes in Elektra with the Web UI\&. .IP "\(bu" 2 This needs to be done via a network socket due to limitations of the Web\&. .IP "\(bu" 2 That means we need to run an Elektra daemon (\fCelektrad\fP) to be able to connect to Elektra at any time\&. .PP .PP .SS "Assumptions" .PP .SS "Considered Alternatives" .PP .IP "\(bu" 2 \fCZeroMQ\fP: small and popular library for pub/sub .IP "\(bu" 2 \fCnanomsg\fP: from the same author as ZeroMQ, even smaller - http://nanomsg.org/documentation-zeromq.html .IP "\(bu" 2 \fCredis\fP: requires a running redis server .IP "\(bu" 2 \fCkafka\fP: seems too big for Elektra .PP .PP .SS "Decision" .PP Use ZeroMQ with \fCJSMQ\fP\&. .PP .SS "Argument" .PP nanomsg sounds interesting, but isn't as popular as ZeroMQ, which is why there are no browser JS bindings available (only Node\&.js, which cannot be easily used for the Web UI)\&. .PP .SS "Implications" .PP .SS "Related decisions" .PP .SS "Notes"