Я играю с redux-observable и socket.io и пытаюсь проверить токен с помощью socket.emits, но redux-observable говорит об этом о действиях. Затем я попытался использовать switchMaps, но у меня есть только последняя отправка в списке методов. Я пробовал разные операторы и методы, но это тоже не сработало. Где я мог ошибиться? Заранее спасибо.
Вот код. Сначала мы испускаем токен (например, это suc
, как и успех), на сервере, если токен от ===
до suc
, я отправляю эмит с verifySuccess
, иначе verifyError
. Я протестировал серверную часть на случай, если проблема есть, но это не так.
Фронт
export default function verify(action$) {
return action$.ofType(TOKEN_VERIFY_REQUEST)
.map(action => Observable.of(socket.emit('verify', { token: 'suc' })))
.mapTo(
Observable.fromEvent(socket, 'verifySuccess')
.mapTo({ type: TOKEN_VERIFY_SUCCESS })
)
.mapTo(
Observable.fromEvent(socket, 'verifyError')
.mapTo({ type: TOKEN_VERIFY_FAILURE })
)
}
Назад
socket.on('verify', async (data) => {
console.log(`got verify with`.red)
console.log(data)
const msgs = {
suc: { msg: 'Received data' },
err: { msg: 'Error in request' }
}
console.log(`data.token is ${data.token}`)
if (data.token === 'suc') {
console.log(`sending success`)
socket.emit('verifySuccess', msgs.suc)
} else {
console.log(`sending error`)
socket.emit('verifyError', msgs.err)
}
})