Перейти к содержимому
HeroBrine1st

OpenComputers Bridge - нестандартный мост.

Рекомендуемые сообщения

Очередной никому не нужный мост

Библиотека для Kotlin/Java с клиентом OpenComputers для интеграции в ваше приложение.

Мост нестандартный. Потому что может это всё:

  • Выполнение существующих функций на удаленном устройстве OpenComputers (без компиляции, быстрый способ)
  • Выполнение произвольного кода на удаленном устройстве OpenComputers (с компиляцией, медленный способ)
  • Можно комбинировать выполнение функций и кода в одном запросе, передавая в аргументы результаты предыдущих выполнений.
  • Получение ивентов с фильтром (например, по умолчанию игнорируются множество ивентов пользовательского ввода)
  • Возможность отправки любых сообщений через протокол из, например, event.listen (что крайне не рекомендуется, но возможность есть)
  • Соединение с клиентом будет разорвано автоматически максимум через 10 секунд, если компьютер перестал функционировать (например, выгрузился чанк или отключился сервер), а соединение не разорвалось.
  • И все это с условно-неограниченным количеством подключенных клиентов - лишь бы хватило ОЗУ, производительности ЦПУ и ОС хоста поддерживала что-то получше select (у него есть ограничение в 1024 сокета).

Так же поддерживается аутентификация, но не поддерживается шифрование. Оно было бы возможно (в простом варианте без кучи кода и криптографии), если бы мод поддерживал вебсокеты, но пока такая возможность отсутствует.

 

Основная цель - хранение кода подальше от опенкомпов, желательно у себя дома.

Так же вы всегда знаете, подключен ли компьютер или нет.

 

Минусы:

  • Требуется статический белый айпи (хотя для написания промежуточного сервера нужно переписать минимум кода благодаря использованию селекторов, я пока не стал этого делать)
  • Из-за того, что изначально OpenComputers не имеет кода для выполнения, немного снижена производительность.

 

Присутствует Javadoc.

Пример кода на стороне сервера (Kotlin)

Более полный пример (тоже котлин)

Репозиторий - в README есть описание работы, а в самом репозитории готовый клиент на moonscript.

Да-да, я знаю, что в Lua нет компиляции, но судя по скорости это именно она и происходит.

Изменено пользователем HeroBrine1st
Питон убираем

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
16 часов назад, HeroBrine1st сказал:

И все это с неограниченным количеством подключенных клиентов - лишь бы хватило ОЗУ, производительности ЦПУ и ОС хоста поддерживала что-то получше select (у него есть ограничение в 1024 сокета).

Тут подробнее. Я на днях смотрел java nio, селекторы используются в зависимости от SelectorProvider, на линухе по дефолту используется EpollSelector, у  него лимит куда больше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Да, немного я погорячился с "неограниченным" количеством. epoll тоже имеет ограничение, указанное в /proc/sys/fs/epoll/max_user_watches

pi@raspberrypi:~ $ cat /proc/sys/fs/epoll/max_user_watches
269947

Но я думаю, что условно-неограниченным можно считать, пока не нужно создавать промежуточный сервер - вот там могут быть проблемы при большой нагрузке.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


×
×
  • Создать...