Я застрял. Я впервые использую Node.js и javascript. Я пытался реализовать привязки Node.js для библиотеки, написанной на C ++. Я написал их и протестировал на простом примере консоли, и они сработали. Однако, когда я использую http-сервер, обратные вызовы из библиотеки не вызываются.
Позвольте мне объяснить шаг за шагом. Библиотека получает сообщения HID от устройств асинхронно. Обратные вызовы вызываются в основном потоке. Должен быть цикл обработки событий, который позволяет получать эти сообщения. Так что для Mac OS я просто делаю
CFRunLoopRunInMode(kCFRunLoopDefaultMode, milliseconds/1000.0, false) ;
в цикле while для имитации цикла событий в C ++. Когда я писал привязки с Nan, я думал, что мне не нужна эта часть кода, потому что цикл обработки событий Node возьмет это за меня (когда я просто запускаю сервер). Однако обратные вызовы C ++ не вызываются.
Если я добавлю привязку для запуска CFRunLoopRunInMode
Я получаю сообщения HID, как я хочу, но основной поток заблокирован, и сервер не работает.
Тогда я попытался положить setInterval/setImmediate/setTimeout/nextTick
и зовет CFRunLoopRunInMode
там. Он работает около ста обратных вызовов (HID-сообщений), и тогда я больше не получаю обратные вызовы C ++.
Я думаю, мне нужно что-то, что управляет обратными вызовами C ++, не блокируя основной поток. Надеюсь, я объяснил достаточно ясно и извините, если я сделал ошибки с терминологией / техническими деталями.
Задача ещё не решена.
Других решений пока нет …