Как асинхронно обслуживать несколько клиентов QBWC с помощью Node.js

Идея состоит в том, чтобы реализовать веб-службу QBWC с использованием Node.js, которая может асинхронно обслуживать несколько входящих запросов. В настоящее время я изучаю qbws, который представляет собой веб-службу Node.js для QuickBooks Desktop Web Connector. Любые идеи о том, как я могу расширить это, чтобы поддерживать асинхронную архитектуру для методов службы?
Заранее спасибо!


person newbie    schedule 30.09.2015    source источник
comment
В моем списке желаний изменить qbws для использования асинхронных обратных вызовов для каждого метода, но в настоящее время у меня нет подходящей среды тестирования, чтобы убедиться, что он работает правильно. Я работал над решением этой проблемы, но сейчас вам нужно изменить его в соответствии с вашими потребностями. Хотя это не должно быть так сложно; просто не стесняйтесь открывать вопрос на GitHub, если вы где-то застряли.   -  person JohnB    schedule 30.09.2015
comment
@JohnB у вас есть демо-код о том, как работают qbws?   -  person WABBIT0111    schedule 08.12.2015
comment
@ WABBIT0111 код на GitHub работает, проверьте раздел Использование. Если у вас есть какие-либо вопросы по этому поводу, не стесняйтесь открывать вопрос на GitHub.   -  person JohnB    schedule 08.12.2015


Ответы (1)


Модуль soap поддерживает асинхронные вызовы функций что делает это легко. Чтобы использовать тот же шаблон, что и мой другой ответ, вот как бы вы это сделали:

var soap = require('soap');

var yourService = {
    QBWebConnectorSvc: {
        QBWebConnectorSvcSoap: {
            serverVersion: function (args, callback) {

                // serverVersion code here

                callback({
                    serverVersionResult: { string: retVal }
                });
            },
            clientVersion: function (args, callback) {

                //clientVersion code here

                callback({
                    clientVersionResult: { string: retVal }
                });
            },

            // and all other service functions required by QBWC

        }
    }
};

Есть два отличия:

  1. Каждая сигнатура метода имеет дополнительный параметр callback
  2. Нет return, вместо этого обрабатывается callback().

В настоящее время у меня нет подходящей среды для тестирования, но я создал клиент для имитации веб-коннектора QuickBooks, и он работал нормально. Преобразование методов qbws в асинхронные позволило ему одновременно обслуживать несколько клиентов (включая одного законного клиента QBWC).

person JohnB    schedule 30.09.2015
comment
Это потрясающе!.. протестировано с несколькими реальными клиентами QBWC.. отлично работает с асинхронными вызовами на другие серверы.. Огромное спасибо! - person newbie; 30.09.2015
comment
@newbie: У вас есть пример кода в github или с открытым исходным кодом, который я могу посмотреть? Я также разрабатываю аналогичное приложение для интеграции с QuickBooks Desktop. - person WABBIT0111; 08.12.2015
comment
@newbie, если у вас есть этот фрагмент кода на Github, дайте ссылку, чтобы мы посмотрели, я тоже работаю над тем же. - person Code_Crash; 26.10.2016