Комментарии 27
Сделай убирание курса мыши — современные браузерные API это позволяют
+1
js-dos v7 пока не поддерживает интеграцию мышки. Это следующий пункт в моей дорожной карте. Обязательно сделаю.
0
В моем варианте мышь поддерживается в VC.COM — это файловый менеджер. Из него запускаю игры. А после запуска Keyrus переключается на русские буквы. А про сохранение, думаю сделать так: нажал на кнопку сохранил образ на диске. Если образ на диске сохраняется, как zip-архив на стороне клиента, то можно извлекать нужные файлы из zip-файла и отправлять в запросе на сервер, там их принимает код-PHP и пишет в указанный каталог на диск, который для каждого клиента свой. А перед загрузкой типового Zip файла с DOS-прогами клиенту эти файлы данного клиента записываются в ZIP-файл. То есть на сервере есть эталонный zip-файл, а потом, если у клиента есть свои файлы, то создается копия zip-файла, записываем в него файлы клиента и потом указываем для загрузки данному клиенту.
0
Так же попробывал FoxPro под DOS и 3D-игру Wolf. Все в браузере запускается и играет. Осталось пример с сохранением файлов сделать, но знаний по JS пока не хватает. Может кто поможет?
0
Нужно просто на кнопку «Сохранить» сделать вызов
У меня похожая схема реализована на DOS.Zone. Если ты зарегистрированный пользователь, тогда по кнопке «Сохранить» твои изменения падают на сервер (можешь проверить устраивает ли тебя такое решение).
Полная схема работы такая:
1. Есть эталонный чистый ZIP (файл jsdos)
2. Пользователь первый раз запускает FoxPro — создается копия файла в личной папке пользователя и отправляется ссылка на него
3. Пользователь жмет кнопку «Сохранить» — вызывается
4. Пользователь заходит ещё раз и получает последнею сохраненную версию
Да это не много не очевидно, надо пользователю объяснить что каждый раз нужно нажимать на кнопку «Сохранить», зато просто и работает как часы.
ci.persist()
. Когда он завершится у тебя будет Uint8Array, ты его отправляй на сервер это обычный ZIP, на сервере же ты его распакуешь и определишь измененные файлы. У меня похожая схема реализована на DOS.Zone. Если ты зарегистрированный пользователь, тогда по кнопке «Сохранить» твои изменения падают на сервер (можешь проверить устраивает ли тебя такое решение).
Полная схема работы такая:
1. Есть эталонный чистый ZIP (файл jsdos)
2. Пользователь первый раз запускает FoxPro — создается копия файла в личной папке пользователя и отправляется ссылка на него
3. Пользователь жмет кнопку «Сохранить» — вызывается
ci.persist()
и новый файл отправляется на сервер. На сервере он просто перезаписывает прошлую версию4. Пользователь заходит ещё раз и получает последнею сохраненную версию
Да это не много не очевидно, надо пользователю объяснить что каждый раз нужно нажимать на кнопку «Сохранить», зато просто и работает как часы.
0
Мне понравилось, но как-то чуть долговязо все идет (не лагает).
+1
а запуститься ли foxpro dos?
+1
Если он работает в обычном dosbox, то значит будет работать и в браузере.
0
А прога бесплатная? Как закачать? Хочу попробывать с foxPro на локальном ВебСервере по сети.
0
Бесплатная. Я пока тестирую сервис, документацию на код и развертывание я опубликую после тесирования.
0
Могу помочь в тестировании, развернув в локалхост у себя и попробывать FoxPro DOS. Если получится сниму видео с указанием на вашу разработку. Было бы прикольно размещать на сайте прогу под DOS, где пользователи забивают данные в DBF-файл на сервере. Я разработчик языка программирования РФокс (Русский Фокс). Предлагаю сотрудничество. www.youtube.com/watch?v=95IvZj3E8Q0&list=PLo4sldcUomOobM9Wvzl315jhh0cC9H3cG&index=5
0
Написал в личку.
0
talks.dos.zone/t/foxpro-2-6-dos-portable
Прекрасно работает даже в браузере.
Прекрасно работает даже в браузере.
0
JFYI «попробовать»
0
Есть проблема: система запускается на виртуальном диске и нет ни какой возможности сохранить файлы на диск компа. То есть сохраниться в играх не получиться, чтоб в следующий раз восстановиться из сохраненного. Есть ли какое то решение этой проблемы? Например, формировать какой либо запрос к странице, который возвратит нужный файл. Или доступ к реальному каталогу на сервере.
0
На самом деле поддержка сохранения и загрузки реализована (документация). В процессе работы эмулятора все изменения сохраняются в виртуальной файловой системе. Используя функцию сохранения вы получаете обновленный бандл со всеми вашими изменениями, вы можете сохранить его на сервере и загрузить вместо оригинального при следующем запуске. Именно так работает сохранение/загрузка на DOS.Zone. В теории можно загружать отдельные файлы из виртуальной ФС, но API пока таких функций не предоставляет.
0
Для моих практических не игровых целях надо бы оперативное сохранение при изменении файла. Например, прописать список файлов и каталог на реальном диске, куда бы эти файлы копировались при каждом изменении. Наверняка, в JS-коде это можно подправить. Я мало практиковался в JS. Может кто-то решит эту задачу. Задача разворачивания сервера в локалхост решена. Сервер работает и без доступа в интернет в локальном компе и по сети. Еще лучше, чтоб кроме виртуальных дисков были видны сетевые диски или локальная реальная папка на компе сервера. Тогда бы так же проблема была бы решена сохранением файлов в такую общую папку.
0
Сохранение отдельных файлов будет сделано в будущем. Увидеть сетевые диски или диски компьютера не получится в принципе, по тому что браузер не позволяет этого делать. Для того что бы это сделать, нужно либо использовать не браузер а electoron какой-нибудь, либо писать сервер которые пробрасывает доступ к ФС компа в браузер.
0
Я напоминаю, что речь идет о доступе к реальному каталогу на стороне сервера, а не на стороне клиента. Я разворачиваю свой сервер, указываю внешнюю папку и подключаю ее как диск, например, с помощью PHP. Папка на стороне сервера.
0
Конечно, тогда один клиент может затереть файл другого клиента, если я не напишу функцию, которая предоставит каждому клиенту свою папку на сервере. Но меня интересует возможность обновлять DBF-файлы несколькими клиентами на сервере. FoxPro поддерживает блокировку записей, значит и многопользовательский режим работы. DBF-файлы будут в общей папке. Из нее будут забираться записи в MySQL-базу фоновой прогой на стороне сервера.
0
Но если виртуальные диски размещаются в памяти клиента, то это реальная проблема для доступа со стороны сервера к этим дискам. Надо создавать канал от клиента к диску на сервере. Встраивать в HTML PHP-код который исполняется на стороне сервера и связывается с JavaScript на стороне клиента (Ajax) и дает доступ к файлам на диске сервера.
0
В идеале через ВебСервер можно создавать локальную сеть между Сервером и клиентом и даже между клиентами. Тогда сервер может открывать папки для доступа в эту локальную сеть и клиенты так же могут открывать доступ к своим папкам. Тогда вопрос так же решиться. Если это делать на NodeJS, тогда во первых получим асинхронность в обработке запросов и код на стороне сервера будет на JavaScript. Я подключил VC-менеджер файлов под DOS и фактически получил в браузере удобную ОС, у которой пока не хватает доступа к реальным дискам и локальной сети с сервером и другими клиентами для полного счастья.
0
Если сделать локальную сеть между клиентами, то можно будет играть в сетевые игры друг с другом в режиме эмуляции DOS.
0
Если ты хочешь сохранить возможность для клиента работать через браузер, то вариант только один. На клиенте нужно написать ФС которая работает через веб-сокеты и полностью синхронизирует свое состояние при каждой операции с сервером. Т.е. фактическ ФС будет на сервере, а клиент будет посылать операции чтения и записи. Это можно сделать, но не думаю что это будет просто, если ты не знаком с emscripten. На всякий случай вот доки. Я бы подумал надо каким-то более простым решением, вроде синхронизации по кнопке или типа-того.
0
Синхронизация по кнопке тоже хорошо. Возможность указать файлы, которые должны синхронизироваться по отправке на сервер (клиент контролирует файл) и по обновлению с сервера (сервер обновляет файл и файл обновляется у клиента). Вместо кнопки может быть фоновый процесс, который обновляет эти списки файлов на сервере и клиенте. emscripten я не знаком. За ссылку спасибо. jsdos умеет создавать виртуальный диск в памяти, хотел бы тоже научиться это делать на С++ или С#. Кстати, а не пробывал делать ВебСервер для jsdos на NodeJS?
0
Важно, получить доступ к чтению и записи файла на виртуальном диске. В неком текстовом файле архива из которого формируется виртуальный диск, сеть файл типа конфиг, в котором есть списки файлов для обновление по чтению и по записи. фоновый процесс, проверяет изменения на сервере и загружает новую версию файла вместо старой, а так же выгружает от клиента новую версию на сервер, если есть изменения у клиента. На сервере это делается в реальный каталог. Причем на сервере есть каталог общий для всех клиентов и каталог индивидуальный для текущего клиента. Тогда клиенты смогут даже обмениваться файлами.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
DOS Cloud Gaming