@Q_Q К сожалению через node.js и ws модуль не могу конектится к сокету т.к там каждый раз создаётся уникальная ссылка для нового пользователя, а объект который её создаёт определить для меня трудно сайт написан на react + obfurscator. Плюс к этому ещё и в самом ws внутри нужно каждые 5 минут отправлять токен аутентификации который генерирует какая-то анонимная функция либо вообще на сервере. Вроде ещё как можно сделать обёртку или сделать прокси чтобы свои обработчики повесить но это уже вообще темный лес для меня недостижимый. Поэтому пришлось использовать такой костыль. В Принципе все работает, ws команды я отправляю также через Ява скрипт и взаимодействую с этим сайтом быстро не используя веб интерфейс сайта вообще. Единственная проблема это видеть всю консоль не только в режиме отладчика. Я думал может в BAS есть какой-то свой способ о котором я не знаю, просто парсить ее в переменную бесконечно каждый раз обращаясь к ней и записывая последнее действие по умолчанию
Управление BAS из вне
-
Здравствуйте, появилась возможность использования Node.js и я решил удаленно управлять BAS. Выбор пал на express, но возникла проблема при первом запуске.
- Сервер продолжает работать после выполнения.
- Как заставить ожидать действие, не вставлять таймаут, а ожидать события '/quit'
http://expressjs.com/ru/starter/hello-world.html
var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); //Что тут можно вставить, что бы ожидать действие, а то скрипт отрабатывает и все }); app.get('/quit', function (req,res) { res.send('closing..'); app.close(); // Закрываю сервер process.exit(0); // Убиваю процесс }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); }); -
Не помогает. Я возможно не правильно использую. Но я только начал вникать в js.
await (new Promise((resolve, reject) => { var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); }); app.get('/quit', function (req,res) { res.send('closing..'); app.close(); process.exit(0); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); }); resolve() }));И так не работает
await(new Promise((resolve, reject) => { var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('<h1>Hello World!</h1>'); }); app.get('/quit', function (req, res) { res.send('closing..'); app.close(); process.exit(0); console.log('Exit'); resolve(); }); app.listen(3000, function () { console.log('Example app listening on port 3000!'); }); })); -
@myweb101 Ветка старая, но всё же, вдруг понадобится кому..
await(new Promise((resolve, reject) => { var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('<h1>Hello World!</h1>'); }); app.get('/quit', function (req, res) { res.send('closing..'); server.close(); console.log('Exit'); resolve(); }); var server = app.listen(3000, function () { console.log('Example app listening on port 3000!'); }); }));Интересная тема так то, можно вешать обработчики запросов..
-
Вот например тестовый проект. Запускает сервер и ждёт данные из get-запроса вида:
127.0.0.1:3000/quit?pr1=1&pr2=2&pr3=3Отображает на странице данные параметров:

Сохраняет полученные данные в переменные [[PR_1]], [[PR_2]], [[PR_3]]

При попытке запуска двух серверов (например, в многопотоке) – будет конфликт портов и ошибка.
При многопотоке можно выделять отдельный порт для каждого потока, либо выделить сервисный поток для передачи данных через глобальные переменные или ресурс. -
0_1521999720245_test242-получаем-из-запроса-данные.xml
Как то странно работает открываю в хроме http://127.0.0.1:3000/ показывает цифру 1 обновляю тоже показывает 1 открываю браузер инкогнито показывает 2 обновляю тоже показывает 2 закрываю обновляю на обычной версии показывает 3 потом обновляю в инкогнито показывает 4 если обновить вкладку почему та не срабатывает скрипт -
@GamiD Смотри, строчка:
res.send("="+[[NEW_VARIABLE]]+"=");Говорит, что твой сервер будет отдавать данные, то есть рисовать страничку.
Далее у тебя в скрипте стоит Увеличить переменную, которую ты показываешь на этой странице.
Получается ты заходишь на страницу и получаешь значение [[NEW_VARIABLE]], чтобы сработал await должна сработать функция app.get('/',, которая ждёт после адресса слеш:http://127.0.0.1:3000/ -
Интересная особенность сервера в том, что после запуска в BAS он работает автономно. То есть скрипт в BAS выполняет следующие любые действия, а сервер при этом работает независимо от скрипта.
Вот тестовый скрипт с простым счётчиком.

Запустите скрипт в режиме записи, выполните экшен node js и пока не закроете скрипт счётчик будет работать.
-
Кстати можно и без await:
var i = 0; var express = require('express'); var app = express(); app.get('/1', function (req, res) { res.send('<a href="http://127.0.0.1:3000/1">http://127.0.0.1:3000/1</a> ='+ i +'='); ++i; console.log('Next'); }); var server = app.listen(3000, function () { console.log('Example app listening http://127.0.0.1:3000/1'); });Интересно как можно получать данные из сервера node js в BAS на живую...
-
Оказалось что получать данные из сервера node js можно через глобальные переменные node js
:D.

-
@Fox Исправлюсь =) запускаю 2 потока на первом потоке скрипт работает без сервера с переменными во втором потоке запускается node, после запуска сервера первый поток перестает работать когда открываешь адрес http://127.0.0.1:3000 второй поток где есть node перезагружается тогда работает несколько секунд первый поток и обратно зависает
тоесть зависает полностью бас -
-
@Fox А я не запускаю 2 сервера а сервер запускается только во втором потоке а первый поток получает данные через http клиент и записывает в текстовый файл а второй поток где запускается сервер он читает данные из текстового файла и выводит через сервер
-
@Fox второй поток где у меня запускается сервер он делает так читает 3 файла через for и проверяет есть там текст который нужен или нет если есть идет дальше и запускает сервер если нет проверяет постоянно вот во время проверки бас зависает как только я в ручную добавляю в текстовый файл нужный текст сразу бас оживляется и после того как доходит обратно до проверки текста зависает завтра покажу проект