посмотрите на мой саг-код, пожалуйста. У меня есть ответ от сервера, но мои действия не отправляются. Ответ приходит с сервера, в зависимости от содержимого, мне нужно отправить действие и выйти из системы пользователя. Что я делаю неправильно? Этот код был написан по примеру и документации саги. Это полный код. Спасибо за любую помощь.
const createSocketConnection = (url, token) => io(...);
const createSocketChannel = socket => eventChannel(emitter => {
const eventHandler = event => {
emitter(sessionLimitNotification(event));
};
const errorHandler = errorEvent => {
emitter(showErrorMessage(errorEvent));
};
socket.on('sessionLimit', eventHandler);
socket.on('error', errorHandler);
const unsubscribe = () => {
socket.off('sessionLimit', eventHandler);
};
return unsubscribe;
});
function* socketSaga(socket) {
try {
const socketChannel = yield call(createSocketChannel, socket);
while (true) {
try {
const payload = yield take(socketChannel);
yield put(payload);
} catch (error) {
yield put(showErrorMessage(error));
}
}
} catch (err) {
yield put(showErrorMessage(err));
}
}
export default function* websocketSaga() {
try {
while (true) {
yield take([START_MESSAGES_SAGA]);
const apiToken = new ApiToken();
apiToken.getFromCookie();
const socket = createSocketConnection(config.api.socketUrl, apiToken.token);
const task = yield fork(socketSaga, socket);
yield take(LOGOUT);
socket.close();
yield cancel(task);
}
} catch (err) {
yield put(showErrorMessage(err));
}
}