VServer
Реализация однопоточного http сервера в среде oneScript
Install / Use
/learn @nextkmv/VServerREADME
vServer
Реализация однопоточного http сервера в среде oneScript
Код запуска сервера приведен в test.os
Сервер = Новый vServer(); Сервер.Порт = 1234; Сервер.Хост = "http://localhost/"; Сервер.Слушать();
Это точка входа в приложение. Здесь мы инициализируем параметры нашего сервера и вызываем метод "Слушать". Далее в силу вступает собственно реализация https сервера.
Далее управление переходит к методу Слушать объект vHttpServer, где сервер ожидает поступления нового запроса.
После поступления нового запроса, сервер обрабатывает запрос и создает объекты vHttpЗапрос, vHttpОтвет содержащие информацию о запросе, и заготовку для ответа.
Данный объект передается в объект vHttpRouter, для маршрутизации. Если клиент запросил файл из папки /resource, то отдаем файл из папки, иначе ищем контроллер и метод, а если они не найдены, выдаем 404 ошибку.
Далее в дело вступает контроллер, который получает данные из модели и читает представление (view), заполняет его данными из модели и возвращает его в объект vHttpОтвет.
Далее я опишу структуру каталогов:
Структура файлов
Test.os - Собственно точка вход в приложение.
vServer.os - реализация сервера vServer.
vHttpЗапрос.os - при получении запроса наш сервер создает объект типа vHttpЗапрос, в котором содержатся все данные, пришедшие в запросе в удобном виде, а именно: сырой текст запроса, структура Заголовок, содержащая праметры запроса, имя контроллера, имя метода, и переданные параметры.
vHttpОтвет.os - этот объект содержит всю необходимую информацию для возврата его клиенту.
vHttpRouter.os - здесь следует описать всю маршрутизацию, то есть указать, что при обращении по адресу /Home/Index следует создать объект контроллера Home и вызвать его метод Index, в контроллер передаются два параметра vHttpЗапрос и vHttpОтвет.
vHttpTemplate.os - Объект для удобства вывода HTML.
Папка controllers - Содержит контроллеры,
Папка views - Содержит представления, грубого говоря, HTML разметку
Папка models - Содержит модели, в которых организован доступ к данным. Под данными здесь понимается, например, подключение к 1С предприятие через COM, чтение из xml или текстового файла. Доступ к БД в oneScript пока не организован.
Папка resource - Содержит файлы *.js, *.css, *.jpg и другие файлы, которые могут быть переданы клиенту. При этом на сайте адрес будет выглядеть http://localhost:1234/resource/cat.jpg.
Для придания симпатичного вида использован framework Bootstrap 3.
Установка
Сначала скачайте и установите OneScript на свой компьютер, желательно установить окружение(Notepad++ с плагинами) согласно этой статье http://infostart.ru/public/327581/. Распакуйте в папку /OneScript/lib/ библиотеку vHttpServer. Убеждаемся, что порт 1234 свободен. Открываем в Notepad++ /models/message.os В процедуре Инициализировать указываем путь к файлу, в котором будут храниться сообщения. Это простой xml файл. Открываем в Notepad++ Test.os и жмем F6. В открывшемся окне пишем oscript "$(FULL_CURRENT_PATH)" Жмем ОК. Открываем http://localhost:1234/ Смотрим результат. Как использовать
Данная разработка - лишь иллюстрация возможностей. Поскольку сервер однопоточный, он не выдержит большой нагрузки, да и стандартная библиотека oneScript пока не позволяет сделать что-то сверх сложное. Однако настроить удаленный доступ к какому нибудь файлу, сделать учет заявок или доступ к 1С через com вполне реально.
Перед разработкой собственного функционала сначала изучите, как работает библиотека, посмотрев файлы vServerHttp, vRouter, контроллеры, модели и представления. Все очень просто и описано в архитектуре.
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
