在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 模块没有返回回复。这似乎导致此调用后的所有回调似乎都有某种一步延迟。
这一切都错了。奇怪的回调行为的原因是我的一个自定义 Redis 模块没有返回回复。这似乎导致此调用后的所有回调似乎都有某种一步延迟。