Как реализовать движение объекта с сохранением координат в БД?
Добрый день
На странице есть объект, допустим, обычный круг. У него есть координаты x1, y1. Объект движется. Движется он в сторону новых заданных ему координат x2, y2.
Как реализовать движение этого объекта таким образом, чтобы его промежуточные координаты сохранялись в БД? Хочется, чтобы когда объект прошёл полпути, обновить страницу и увидеть его не в начальной точке, а в той, в которой он был в момент перезагрузки страницы.
Я слышал, что сейчас есть много javascript-решений для реализации подобного, типа React или Angular, но так как особо дел с ними не имел, трудно оценить с чего начать и в какую сторону копать. Осложняется всё тем, что объектов планируется большое количество, и каждый из них будет активно перемещаться по странице. Хочется и браузер не повалить, да и сервер тоже.
В общем, буду рад любой наводке, которая поможет прибрать мусор в голове и расставить по полкам что к чему и с чего начать.
П.С.
Изначально в качестве серверной реализации устремил взгляд в сторону NodeJS и MongoDB, в качестве фронтенда в React, но теперь закралась тень сомнений, правильно ли выбрал инструментарий.
П.П.С.
Что-то подобное реализовано уже в Яндекс.Транспорте. В частности приближающиеся транспортные средства на карте, находящиеся рядом с человеком
Что-то подобное реализовано уже в Яндекс.Транспорте. В частности приближающиеся транспортные средства на карте, находящиеся рядом с человеком
В Яндекстранспорте немного иная логика, там не точка движется в браузере с сохранением координат, там координаты меняются в базе, а браузер их только показывает периодически синхронизируясь (что вызывает перескакивание точки)
1) Можно сохранять текущие координаты в LocalSorage браузера.
2) Для долговременного хранения можно использовать специализированную СУБД для хранения временных рядов, например, InfluxDB.
React и Angular это про данные, формы. Вам же достаточно vanila или jquery.
Хранить координаты каждый раз нет смысла. Лучше привязаться ко времени пути и при перезагрузке высчитывать текущие координаты как x2y2 - x1y1 + путь за прошедшее время.
Промежуточное сохранение в БД делается просто - обычный ajax, который передаёт на сервер координаты и скрипт делает сохранение. Но это не очень грамотное решение, потому что это будет неоправданно нагружать сервер. Я бы предложил использовать сервер на сокетах, тогда можно удерживать в кэше данные и при завершении действия или при потере соединения выполняется сохранение в базу. Выбранные вами инструменты отлично справляются с этой задачей, тут разница небольшая - главное не использовать php.
P.S. Предыдущий комментарий предлагает использовать метку времени для определения промежуточного пути. Это отличный способ сэкономить на ресурсах в конкретном примере, но он менее точен в других случаях. Я описал общий принцип сохранения промежуточных данных произвольного типа.
Можно попробовать сокеты (если например хотите видеть другие движущиеся объекты в реалтайме), плюс хитрые события реализовать. Если объект планируется всего один, то конечно проще ajax и обновление например когда объект остановился или перезагрузка страницы.