170 похожих чатов

Привет. Я не нодер, даже не джаваскриптер, но волею судьбы

пишу плагин для VSCode, а там нода и жс ) Хочу интегрироваться с джава - библиотекой из ноды: вызывать функции с параметрами и получать результаты (типы хоть строки хоть жсон не важно). Как лучше это сделать? Каждый раз запускать дочерний процесс с запуском джарника с аргументами в командной строке - долго и неоптимально. Веб-сервер на джаве поднять и из ноды стучаться в его эндпоинты? Или есть варианты быстрые и попроще?

10 ответов

7 просмотров

Если исключить переписывание кода жавы на js - принципиально мало что можно придумать другое. Например, поднять службу/демона, который будет предоставлять api по юникс сокетам - но это звучит диковато. Поднять и держать сервак в сети и всех туда гонять - но тогда для работы плагина нужен инет

А почему диковато? Юниксовые сокеты весьма шустрые, по-моему норм решение. Для обоих языков обвязок достаточно.

Диковатость не в них, а в поднятии службы/демона Юникс сокеты надо использовать и при поднятии веб сервера

Это нормально. Для тайпскрипта тоже сервер поднимается, например.

Поднимать службу там, где можно ограничиться процессом - это диковато, и если ts так делает, то это ещё один лулз

Andrey-Ivanov Автор вопроса

Спасибо. 1. Переписывание кода джавы на жс работает сейчас - и медленно. Именно поэтому и возникла идея дергать джаву напрямую. (Идеи что на жс написано криво и неоптимально имеют право на жизнь, но на самом деле все сложнее - это чужая либа написана на кложе, можно компилировать и в жс и в джаву, так вот компилированная напрямую в жс она тормозит) 2. Апи по юникс сокетам с поднятым демоном кажется именно то что нужно, спасибо, покурю. Единственно что - юзеры плагина на винде расстроятся что у них не будет работать, а делать кроссплатформенное решение мне лень ) 3. Сервак будет не в инете, а подниматься локально, при инициализации плагина, а нода будет стучаться к нему по локалхосту. Вчера это реализовал уже, вроде норм, только бьюсь с передачей сырого текста в боди - оно мне удаляет переводы строк и лишние пробелы, а мне надо как есть

Так а зачем демон то? Почему не поднять просто обычный процесс рядом? Тогда проще будет кроссплатформенность обеспечить, разница будет только в пути к сокетам (у винды там какая-то дичь с /./pipe/...) С демоном тоже можно кроссплатформенно сделать, в Винде это называется служба. Но это запарнее

Andrey-Ivanov Автор вопроса

Честно говоря, я пока не щупал ни демоны ни процессы, поэтому и спросил про возможные варианты. Теперь покурю-погуглю что это. С веб-сервером то есть опыт, поэтому и реализовал пока на нем )

Наверное самый простой вариант - поднимай дочерний процесс, в нём запускай сервак и слушай сокет с каким-нибудь уникальным именем Нужны нодовские модули child_process и net

Что за библиотека, которая на clojure?

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
{!! $modx->runSnippet( 'multiTV',[ 'tvName'=>'slider-main1', 'docid'=>'[*id*]', 'tplConfig'=>'', 'display'=>'4', 'offset'=>'0', 'rows'=>'all', 'ra...
Роман С
4
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Всем привет! поделитесь, пож-та, как кто дебажил / решал проблему с 504 Time out ошибкой от nginx, когда стучишься на свой vapor сервер? в логах /var/log/nginx/error.log е...
Paul
24
Как добавить ссылку в Быстрый доступ в Проводнике windows 10? Нашёл, как на power shell сделать, но может есть способ через Дельфи?
А
31
Привет всем. Не знаю, удачный ли чатик я выбрал для вопроса, но он как будто в целом про концепцию фп и конкретно про Haskell. Прочитал, что в целом в мире фп нет идеи мутабел...
Gellert Cringewald
15
Карта сайта