Skip to content

Instantly share code, notes, and snippets.

@monkey-codes
Created September 12, 2017 09:09
Show Gist options
  • Select an option

  • Save monkey-codes/b42c0919c5228b1619c816a0bb169966 to your computer and use it in GitHub Desktop.

Select an option

Save monkey-codes/b42c0919c5228b1619c816a0bb169966 to your computer and use it in GitHub Desktop.
WebFlux - WebSocket redux middleware
class NullSocket {
send(message){
console.log(`Warning: send called on NullSocket, dispatch a ${WEBSOCKET_CONNECT} first`);
}
}
function factory({messageToActionAdapter}) {
let socket = new NullSocket();
return ({dispatch}) => {
return next => action => {
switch (action.type) {
case WEBSOCKET_CONNECT:
socket = new WebSocket(action.payload.url);
socket.onmessage = (msg) => {
dispatch(messageToActionAdapter(msg) || { type:WEBSOCKET_MESSAGE, payload: msg.data});
}
break;
case WEBSOCKET_SEND:
socket.send(JSON.stringify(action.payload));
break;
}
return next(action);
}
}
}
export default factory;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment