当在nodejs应用程序中的websocket消息事件中使用redis客户端(ioredis或node_redis)时,不会立即触发任何命令的回调。(操作确实在redis服务器上进行)
奇怪的是,第一个命令的回调将在我发送第二条消息之后触发,而第二个回调将在发送第三个消息后触发。
wss.on('connection', (socket, request) => {
socket.on('message', (data) => {
console.log("will send test command")
this.pubClient.hset("test10", "f1","v1", (err,value) => {
//callback not firing first time
console.log("test command reply received")
})
})
}redis命令可以像预期的那样工作,但是在应用程序的其他部分,甚至在on连接内部也是如此,如下所示。
wss.on('connection', (socket, request) => {
console.log("will send test command")
this.pubClient.hset("test10", "f1","v1", (err,value) => {
//callback fires
console.log("test command reply received")
})
socket.on('message', (data) => {})
}更新:
我都错了。出现奇怪的回调行为的原因是由于我的一个定制Redis模块没有返回回复。这似乎导致了这个呼叫之后的所有回调似乎都有某种一步延迟。
发布于 2019-02-05 08:04:54
我都错了。出现奇怪的回调行为的原因是由于我的一个定制Redis模块没有返回回复。这似乎导致了这个呼叫之后的所有回调似乎都有某种一步延迟。
https://stackoverflow.com/questions/54524873
复制相似问题