Использование обратных вызовов socket.io с асинхронными функциями и zeromq-ng вызывает ошибку сегментации - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь использовать npm zeromq-ng в качестве уровня связи между JavaScript и C ++. ZeroMQ является обязательным здесь. Из-за ошибки в отправке двоичных данных в исходном npm zeromq мне пришлось вернуться к zeromq-ng.

zeromq-ng требует асинхронных функций в JavaScript. Однако я не уверен, как заставить этот тип формата работать с npm socket.io, так как мне нужно было настроить обратные вызовы.

Я пытался просто объявить объект zeromq в отдельной асинхронной функции, но я получаю ошибку сегментации на send(). Я также попытался настроить обратные вызовы отдельно от асинхронной функции, которая вызывается с тем же результатом. Добавление любого вида цикла while к асинхронной функции препятствует правильной настройке любых обратных вызовов.

const zmqng = require("zeromq-ng");

async function run()
{
  const pub = new zmqng.Publisher;
  pub.bind("address...");

  ws_io.on('connection', async function (socket_data) {
    await pubSock.bind(pubAddr);

    // . . .

    ws_socket.on('serverEvent', async function (data) {
      await pubSock.send("Hello, World!"); // segmentation fault here
    });
  });
}

run();

Я бы ожидал увидеть «Hello, World» на подписчике на стороне C ++, но вместо этого я получил ошибку сегментации exit status 139.

...