Геозоны

Геозона является виртуальной границей, которая может определять, когда объект входит или выходит из области. Эта граница может быть радиусом или любым форматом области поиска, таким как ограничивающая рамка, объект GeoJSON и т. Д. Fluentbase может превратить любой стандартный поиск в монитор геозоны, добавив в поиск ключевое слово FENCE.

Для демонстрации мы будем использовать канал pubsub для прослушивания уведомлений геозоны. Откройте два терминала:

Терминал 1

Подключитесь к серверу Fluentbase и создайте геозону с помощью команды SETCHAN или SETHOOK.

В этом примере мы используем канал pubsub.

$ fluentbase-cli -h localhost -p 9471 localhost:9471> SETCHAN warehouse NEARBY fleet FENCE POINT 33.462 -112.268 6000 {«ok»:true,»elapsed»:»21.712µs»}

Подпишитесь на только что созданный вами канал Geofence Pubsub.

localhost:9471> SUBSCRIBE warehouse {«ok»:true,»command»:»subscribe»,»channel»:»warehouse»,»num»:1,»elapsed»:»7.361µs»}

Соединение будет оставаться открытым с помощью команды SUBSCRIBE. Если какой-либо объект входит или существует в радиусе 6 км около 33.462, -112.268, сервер в режиме реального времени ответит уведомлениями о геозоне.

Терминал 2

Подключитесь к серверу Fluentbase и создайте точку в коллекции флота, которая будет вызывать уведомление геозоны:

$ fluentbase-cli -h localhost -p 9471 localhost:9471> SET fleet bus POINT 33.460 -112.260 {«ok»:true,»elapsed»:»12.988µs»}

Событие появится в Терминале 1 и будет выглядеть так:

{ «command»:»set», «group»:»5c5203ccf5ec4e4f349fd038″, «detect»:»inside», «hook»:»warehouse», «key»:»fleet», «time»:»2019-01-30T13:06:36.769273-07:00″, «id»:»bus», «object»:{«type»:»Point»,»coordinates»:[-112.26,33.46]} }

Сервер уведомит подписанных клиентов, если используется командаdel или set или drop.

  • del уведомляет клиента о том, что объект был удален из коллекции, которая ограждается.
  • dropуведомляет клиента о том, что вся коллекция удалена.
  • set уведомляет клиента, что объект был добавлен или обновлен, и когда его позиция обнаружена оградой.
  • The detect may be one of the following values.
  • inside когда объект находится внутри указанной области.
  • outsideкогда объект находится за пределами указанной области.
  • enterкогда объект, которого раньше не было за границей вошел в область Когда объект, которого раньше не было за границей, вошел в область.
  • exitкогда объект, который ранее находился за границей, покинул область.
  • cross когда объект, которого ранее не было на границе, вошел и покинул область.
  • По умолчанию возвращаются все обнаруженные типы и команды. Если вы хотите иметь только несколько вариантов выбора, используйте опцию DETECT, например:

SETCHAN warehouse NEARBY fleet FENCE DETECT inside,outside POINT 33.462 -112.268 6000

Эта команда только скажет границе, что вы хотите искать объект только внутри и снаружи обнаружения.

Также возможно замаскировать, какие команды возвращаются, используя опцию COMMANDS, например:

SETCHAN warehouse NEARBY fleet FENCE DETECT enter COMMANDS set POINT 33.462 -112.268 6000

Это указывает, что вы хотите только обнаружение ввода для команды set.

EnglishРусский