【发布时间】:2017-07-09 18:59:21
【问题描述】:
我正在使用 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)
}
})
【问题讨论】:
标签: reactjs socket.io redux rxjs redux-observable