При использовании клиента redis (ioredis или node_redis) в событии сообщения websocket в приложении nodejs обратный вызов для любой команды запускается не сразу.(хотя операция действительно выполняется на сервере 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 работает, как и ожидалось, хотя и в других частях приложения, и даже в подключенном соединении, как показано ниже.
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 не возвращает ответ.И это, похоже, вызвало все обратные вызовы после этого вызова, похоже, с какой-то задержкой в один шаг.