Обратный вызов IORedis или (node_redis) не запускается после вызова пользовательских команд / модулей Redis - PullRequest
0 голосов
/ 05 февраля 2019

При использовании клиента 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 не возвращает ответ.И это, похоже, вызвало все обратные вызовы после этого вызова, похоже, с какой-то задержкой в ​​один шаг.

1 Ответ

0 голосов
/ 05 февраля 2019

У меня все было не так.Причина странного поведения обратного вызова - результат того, что один из моих пользовательских модулей Redis не возвращает ответ.И это, похоже, вызвало все обратные вызовы после этого вызова, похоже, с какой-то задержкой в ​​один шаг.

...