An easy way of consuming an EventEmitter (e.g. socket.io) in redux-saga
Install using npm:
$ npm install --save redux-saga-event-iterator
import {call} from 'redux-saga/effects';
import eventIterator from 'redux-saga-event-iterator';
import io from 'socket.io-client';
const socketClient = io('localhost:12345');
const listenerSaga = function * (eventName) {
const {nextEvent, removeListener} = yield call(eventIterator, socketClient, eventName);
while (true) {
const payload = yield call(nextEvent);
// Do something with payload
}
// Optionally remove listener, further calls to nextEvent will throw an error
yield call(removeListener);
};
To run the tests:
$ npm test
Feel free to create a pull request. Make sure to lint and test:
$ npm run lint && npm run test
MIT - see LICENSE