Трэкинг нескольких клиентов java + websocets php

Рейтинг: 0Ответов: 1Опубликовано: 28.02.2023

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

try {
    runOnUiThread(() -> {
        mapView.getMap().getMapObjects().addPlacemark(new Point(rootGeolocation.getLatitude(), 
        rootGeolocation.getLongitude()),  ImageProvider.fromResource(HomeActivity.this, 
        R.drawable.geolocation));
    });
} catch (Exception e){
    Log.d("geoCatch", e.getMessage());
}

сервер сокетов написан на php с использованием библиотеки воркерман

Ответы

▲ 0Принят

Итак, лучше поздно чем никогда

Я отправляю по вебсокетам данные о геопозиции (листенером) на сервер, с сервера обрабатываю предисом данные и отправляю хэшем всем клиентам, дальше паршу ответ, делаю из него хэш и изменяю позицию точки.

Пример логики выглядит так: Есть 2 экрана: для людей за которыми ведется трекинг(Т), и для людей которые следят(С). Также есть хэш для каждого пользователь(уникальный)

Отправляется с экрана Т данные на сервер по вебсокет соединению, там, заносится его хэш в список предиса, дальше формируется хэш из данных :

$redis->hmset($decode['Hash'], array(
        "Longitude" => $decode['Longitude'],
        "Latitude" => $decode['Latitude'],
        "DC" => $decode['DC'],
        "Hash" => $decode['Hash'])
        );

кодируется и отправляется клиенту приконнектившемуся, дальше, при след отправки данных, если есть хэш в листе, то данные просто обновляется и приходит уже не массив клиентам, а строка. Массив парсится на строне С и заносится в бд как

List<String, Object> places = new HashMap<>;

places.add(parce.get("Hash"), addPlacemark);

Если приходит строка с изменениями, ищем по ключу нужный элемент массива и сдвигаем точку.

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

{"Exit": "HashU"}

Из этого мы удаляем плейсмарк и хэш из списка

Надеюсь, кому-то помог, удачного коддига