Отправка данных в сокеты uWebSockets 0.15.x из другого потока - PullRequest
0 голосов
/ 03 марта 2019

Я использую uWebSockets версии 0.15.x для приема и управления подключениями через веб-сокеты на сервере.У меня есть один поток, вызывающий uWS :: TemplatedApp :: run для обработки этого.

Мне нужно отправить данные на все открытые веб-сокеты из другого потока.Насколько я понимаю, uWebSockets не является потокобезопасным.Каков рекомендуемый способ сделать это?

(Руководство пользователя uWebSockets для 0.14.x обсуждает uS :: Async, но этот класс отсутствует в 0.15.x. Из текущей документации не ясно, что такое эквивалент.)

1 Ответ

0 голосов
/ 05 марта 2019

Это можно сделать с помощью следующих методов:

  • uWS :: Loop :: defaultLoop - возвращает объект Loop для вызывающего потока
  • uWS :: Loop :: defer - выполняетданная функция в потоке цикла

В предложенном случае использования поток "сервера" может вызвать uWS :: Loop :: defaultLoop и предоставить этот указатель на другие потоки.Другие потоки могут вызывать uWS :: Loop :: defer для запуска кода в «серверном» потоке, захватив необходимые данные в лямбду.Потоки могут совместно использовать список сокетов, если он является многопоточным и доступен только из кода, запущенного в потоке «сервер».

...