redux-rxjs-socket.io
Helper functions to connect socket.io to redux, when using redux-observable.
Mappers
This library lets you define mappers from socket events to redux actions, and redux actions to socket events. The mappers you define are maps, that return a function that may return a value/array or a stream.
Event to Action Mappers
Below is a sample definition of socket to redux actions.
// custom event that is triggered if you use the #register method and socket is registered RegisterHelperSymbolsSOCKET_REGISTER: actions // custom event that is triggered when the subscription is stopped RegisterHelperSymbolsSOCKET_UNREGISTER: actions // some custom events with data, that are emitted by the client/server socket actions // you can also use the latest game state, when creating actions, can return streams
Action to Emit Mappers
Below is a sample definition of mapping redux actions into emitted events.
// on some action, create an event ActionTypesUserConnected: { return userId !== mapperUserId ? event: 'other_user' data: userId leaderboard: stateleaderboard : ; }
Methods
- generateActionStreamCreator = (mapperDefinition) => (socket, state$, outsideEvent$) given a mapper definition, returns a function, that will return a action stream when given a socket, state stream and an custom outsideEventStream. When the returned stream is unsubscribed, the event register events on sockets will be unregistered.
- generateEmitStreamCreator = (mapperDefinition) => (action$, state$) given a mapper definition, returns a function, that will return a event stream when given redux action stream and a redux state stream.
- register = (eventToActionMapper, actionToEventMapper) => (socket, action$, state$, storeDispatch) when given event and action mapper definitions, returns you a function that will register a socket to a redux store. You just need to give socket, action$, state$ and the store dispatch function.