@Q_Q К сожалению через node.js и ws модуль не могу конектится к сокету т.к там каждый раз создаётся уникальная ссылка для нового пользователя, а объект который её создаёт определить для меня трудно сайт написан на react + obfurscator. Плюс к этому ещё и в самом ws внутри нужно каждые 5 минут отправлять токен аутентификации который генерирует какая-то анонимная функция либо вообще на сервере. Вроде ещё как можно сделать обёртку или сделать прокси чтобы свои обработчики повесить но это уже вообще темный лес для меня недостижимый. Поэтому пришлось использовать такой костыль. В Принципе все работает, ws команды я отправляю также через Ява скрипт и взаимодействую с этим сайтом быстро не используя веб интерфейс сайта вообще. Единственная проблема это видеть всю консоль не только в режиме отладчика. Я думал может в BAS есть какой-то свой способ о котором я не знаю, просто парсить ее в переменную бесконечно каждый раз обращаясь к ней и записывая последнее действие по умолчанию
выполнить команду в BAS_API из string, eval?
-
необходимо сделать обертку для BAS_API,
чтобы передавать id команды
и бас скачивал команду как текст с сервера и результат тоже отправлял.как выполнить команду бас из string?
например BAS_API(eval("log(\"1234\")"))смысл всего этого ускорить работу,
избежать передачи данных через win32 pipe. -
все работает
этот конечно "костыли",
но хз как иначето есть мы туда закидываем функцию которая будет обрабатывать команды по ид и вызывать через хттп сервер.
const util = require('util')
try {
const func =const test = 'function t1() {sleep(1000)!; _set_result("test")}'; eval(test); _call(t1, null)! log(_result())
await BAS_API(func)
} catch (error) {
console.log('error')
console.log(util.inspect(error))
throw error
} -
@DoctorKrolic said in выполнить команду в BAS_API из string, eval?:
@jason @UserTrue Сейчас уже доступно API БАС'а из C#, Node.js и python. Если это подойдёт
Я знаю, но там не апи бас доступно, а вызов функции из проекта. Наверное что-то тоже можно накостылить на нем, только вопрос как все это будет работать поток в 100..
-
проще всего сделать отдельный модуль,
будет функция типа
execCmd(thread: number, taskId: number): Promise<any>и будет скачивать content = get(http://localhost/<thread>/<id>)
потом
let error: any
let result: any
try {
eval(content)
} catch (error_) {
error = error_
}POST_RESULT(http://localhost/<thread>/<id>, {error, result})
то есть передаем только два числа и получаем результат