Более быстрые альтернативы для IPC-модуля Electron - PullRequest
0 голосов
/ 08 февраля 2019

Я пишу приложение Electron, которое должно отправлять довольно много данных каждые ~ 25 мс от средства визуализации в отдельный процесс Node, запущенный в основном процессе с собственным модулем fork.

Данные выглядяткак это: [{ x: int, y: int }, ...], с примерно 1000 точками в нем (и немного больше информации, чем показано здесь для краткости).

Я начал использовать ipc.send в процессе рендеринга, но у него довольно серьезное снижение производительности: 4,25 мс для каждого ipc.send.

Итак, я рассмотрел запуск WebSocket с пакетом ws npm в раздвоенном процессе Node и отправку данных через WebSocket с помощью JSON.Это было намного лучше.Даже улучшил его, используя avsc вместо анализа в JSON (от ~ 4мс до ~ 1мс).

Таким образом, решение WebSocket работает отлично, но есть проблема: ему нужно найти свободный порт иперейти по локальной сети.В macOS это также вызывает диалог:

Хотите ли вы, чтобы приложение "x.app" принимало входящие сетевые подключения?

Этот диалог в сочетании с хитростьюя бы хотел избежать использования локальной сети, если это возможно.

Мой вопрос: Кто-нибудь знает лучшее решение для отправки данных другим процессам в Electron, которое неперейти по локальной сети?

1 Ответ

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

Итак, решение WebSocket работает отлично, но есть проблема: ему нужно найти свободный порт и перейти по локальной сети.В macOS это также вызывает диалог: ...

Используете ли вы адрес обратной связи?Адреса обратной связи никогда не должны требовать подтверждения сети.В моих локальных проектах ws electronic я использую 127.0.0.1:port вместо localhost, и это полностью обходит диалоговые окна интернет-безопасности.Вы можете использовать другие адреса 127.xxx, если вы добавляете соответствующий интерфейс обратной связи в Linux / MacOS .В Windows 127.xxx уже добавлены по умолчанию.

Мой вопрос: кто-нибудь знает лучшее решение для отправки данных другим процессам в Electron, которое не идет по локальной сети?

Electron может использовать IPC, RPC или сетевые коммуникационные технологии.Вы уже испытали IPC (RPC очень похож).Самым быстрым, по моему опыту, являются сетевые технологии.Мой опыт был очень похож на ваш в том, что паутина взорвала конкуренцию.Сетевые коммуникационные технологии никогда не должны запускать меры безопасности LAN / WAN / ISP, если они не используют адреса LAN / WAN / ISP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...