Skip to content
This repository was archived by the owner on Jan 22, 2023. It is now read-only.

Use obsverables duplex - #2

Open
adz5a wants to merge 2 commits into
Brykou:masterfrom
adz5a:use-obsverables-duplex
Open

Use obsverables duplex#2
adz5a wants to merge 2 commits into
Brykou:masterfrom
adz5a:use-obsverables-duplex

Conversation

@adz5a

@adz5a adz5a commented Sep 25, 2018

Copy link
Copy Markdown

Take actions as input to control the websocket behaviour

Observables are great! Using thenm to model async producers and
manipulate them as value is pretty cool!

In this I make use of xstream and a simple middleware lib to use then to
model Websocket subscription. Removing (almost) the use for thunks
(which closes over the ws connexion).
The app uses redux as a state management utility, which means the
communication inside the app will be done using actions `{ type: String,
...body }`. Because actions are pure data passing them around using
observables is a way to model the data flow inside the code.

This PR refactors what was shown in the precedent PR (see first commit)
to enable a kind of "duplex" communication. The `createSocket$` utility
now takes an `action$` stream as input. Upon subscription it will create
a WS instance and connect (could be parameterized and made lazy easily).

It will then look for several actions with "special" types (qualified,
could be parameterized also). For instance if an action with type `
"SOCKET_SEND_MESSAGE"` is dispatched upstream, then if will convert
into JSON the action and send it via the websocket. When a message is
received a `"SOCKET_RECEIVED_MESSAGE"` is dispatched to consumers.

This means that the behaviour of the WS can be controlled entirely
through actions.
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant