Управление BAS из вне
-
@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]]
При попытке запуска двух серверов (например, в многопотоке) – будет конфликт портов и ошибка.
При многопотоке можно выделять отдельный порт для каждого потока, либо выделить сервисный поток для передачи данных через глобальные переменные или ресурс.
-
@Fox Спасибо выручил по больше бы таких примеров
-
@Fox said in Управление BAS из вне:
127.0.0.1:3000/quit?pr1=1&pr2=2&pr3=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
.
-
This post is deleted!
-
@GamiD На будущие, когда написали пост, перечитайте его сами, всё ли вы понятно объяснили?
Скиньте скрипт, а то по сообщениям будем долго гадать.
-
@Fox Исправлюсь =) запускаю 2 потока на первом потоке скрипт работает без сервера с переменными во втором потоке запускается node, после запуска сервера первый поток перестает работать когда открываешь адрес http://127.0.0.1:3000 второй поток где есть node перезагружается тогда работает несколько секунд первый поток и обратно зависает
тоесть зависает полностью бас
-
@GamiD Вы же читали выше?
При попытке запуска двух серверов (например, в многопотоке) – будет конфликт портов и ошибка.
Вот тестовый скрипт , работающий в два потока. В первом определяется сервер, во втором выводит в лог надпись Test каждые 10 секунд. Всё работает и ни чего не зависает.
-
@Fox А я не запускаю 2 сервера а сервер запускается только во втором потоке а первый поток получает данные через http клиент и записывает в текстовый файл а второй поток где запускается сервер он читает данные из текстового файла и выводит через сервер
-
@Fox второй поток где у меня запускается сервер он делает так читает 3 файла через for и проверяет есть там текст который нужен или нет если есть идет дальше и запускает сервер если нет проверяет постоянно вот во время проверки бас зависает как только я в ручную добавляю в текстовый файл нужный текст сразу бас оживляется и после того как доходит обратно до проверки текста зависает завтра покажу проект
-
@GamiD Вы предлагаете мне писать тестовый скрипт по вашему сообщению? Серьёзно?
-
@Fox да нет просто смысл скрипта написал сам скрипт вечером покажу
-
@Fox said in Управление BAS из вне:
Вот тестовый скрипт , работающий в два потока. В первом определяется сервер, во втором выводит в лог надпись Test каждые 10 секунд. Всё работает и ни чего не зависает.
если убрать задержку во втором потоке зависает =)
-
@GamiD Вот код второго потока, как думаете, почему без задержки скрипт зависает?
Вот скрипт с этим же бесконечным циклом и выводом в лог надписи
test
. В режиме запуска зависает. Но какое отношение это имеет к серверу на node js?
-
@Fox Без понятия какое отношение имеет но зависает без задержки с задержкой нет