@genericname1
Does this happen specifically when copying something inside BAS? In the script panel where the actions are or from the browser?
What version of BAS are you using?
Please record a video demonstrating the problem so that we can understand what is happening.
Управление 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 и проверяет есть там текст который нужен или нет если есть идет дальше и запускает сервер если нет проверяет постоянно вот во время проверки бас зависает как только я в ручную добавляю в текстовый файл нужный текст сразу бас оживляется и после того как доходит обратно до проверки текста зависает завтра покажу проект