@BarneyGumble

Как реализовать движение объекта с сохранением координат в БД?

Добрый день

На странице есть объект, допустим, обычный круг. У него есть координаты x1, y1. Объект движется. Движется он в сторону новых заданных ему координат x2, y2.

Как реализовать движение этого объекта таким образом, чтобы его промежуточные координаты сохранялись в БД? Хочется, чтобы когда объект прошёл полпути, обновить страницу и увидеть его не в начальной точке, а в той, в которой он был в момент перезагрузки страницы.

Я слышал, что сейчас есть много javascript-решений для реализации подобного, типа React или Angular, но так как особо дел с ними не имел, трудно оценить с чего начать и в какую сторону копать. Осложняется всё тем, что объектов планируется большое количество, и каждый из них будет активно перемещаться по странице. Хочется и браузер не повалить, да и сервер тоже.

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

П.С.
Изначально в качестве серверной реализации устремил взгляд в сторону NodeJS и MongoDB, в качестве фронтенда в React, но теперь закралась тень сомнений, правильно ли выбрал инструментарий.

П.П.С.
Что-то подобное реализовано уже в Яндекс.Транспорте. В частности приближающиеся транспортные средства на карте, находящиеся рядом с человеком
  • Вопрос задан
  • 343 просмотра
Пригласить эксперта
Ответы на вопрос 4
streetflush
@streetflush
React и Angular это про данные, формы. Вам же достаточно vanila или jquery.
Хранить координаты каждый раз нет смысла. Лучше привязаться ко времени пути и при перезагрузке высчитывать текущие координаты как x2y2 - x1y1 + путь за прошедшее время.
Ответ написан
Комментировать
vitali1995
@vitali1995
Промежуточное сохранение в БД делается просто - обычный ajax, который передаёт на сервер координаты и скрипт делает сохранение. Но это не очень грамотное решение, потому что это будет неоправданно нагружать сервер. Я бы предложил использовать сервер на сокетах, тогда можно удерживать в кэше данные и при завершении действия или при потере соединения выполняется сохранение в базу. Выбранные вами инструменты отлично справляются с этой задачей, тут разница небольшая - главное не использовать php.

P.S. Предыдущий комментарий предлагает использовать метку времени для определения промежуточного пути. Это отличный способ сэкономить на ресурсах в конкретном примере, но он менее точен в других случаях. Я описал общий принцип сохранения промежуточных данных произвольного типа.
Ответ написан
Комментировать
Morfeey
@Morfeey
Можно попробовать сокеты (если например хотите видеть другие движущиеся объекты в реалтайме), плюс хитрые события реализовать. Если объект планируется всего один, то конечно проще ajax и обновление например когда объект остановился или перезагрузка страницы.
Ответ написан
Комментировать
@phper
Software Engineer
для общения с сервером https://socket.io/
для хранения в памяти на сервере https://redis.io/
если нужно хранить долгосрочно то mysql или mongo, что удобнее
если данных сверх много можно попробовать https://clickhouse.yandex/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы