278  /  330

Push & Pull для гостей

Просмотров: 1051 (Статистика ведётся с 06.02.2017)
Дата последнего изменения: 13.10.2016

Запустить Push & Pull для гостей можно, но необходимо реализовать свою логику фиксации сессии за гостем. Для этого необходим уникальный числовой идентификатор: без него невозможно выдать гостю один и тот же адрес канала и невозможно отправлять ему персонализированные команды. С версии Push & Pull 15.5.1 такая возможность появилась.

Для реализации функционала разработчику необходимо реализовать методы определения гостя, присвоение ему внутреннего числового идентификатора. Допустим этот идентификатор у вас определился как 1. Чтобы не путать авторизованных и не авторизованных пользователей, передавать этот идентификатор в модуль Push & Pull его нужно со знаком минус:

$guestId = -1;

CModule::IncludeModule('pull');
CPullStack::AddByUser($guestId, Array(
   'module_id' => 'test',
   'command' => 'check',
   'params' => Array(),
)); 

Метод который определяет идентификатор, нужно реализовать и выполнить в прологе, до момента инициализации Push & Pull. Для этого необходимо будет зарегистрировать зависимость:

RegisterModuleDependences("main", "OnProlog", "main", "", "", 2, "local/scripts/pull_hit.php");

Внутри указанного файла должна быть ваша логика определения и указание константы PULL_USER_ID которая будет использоваться для корректного формирования канала гостю. Для каждого гостя должен быть свой идентификатор!

$guestId = -1; // эту цифру должна вернуть ваша функция, определения идентификатора для гостя
define('PULL_USER_ID', $guestId);

После этого ваши гости могут получать Push & Pull команды наравне с авторизованными.

Для удобства отладки, вы можете воспользоваться следующими JS командами:

JS Команды
BX.PULL.getDebugInfo(); Данная команда отображает состояние подключение к серверам P&P;
BX.PULL.capturePullEvent(); Данная команда логирует все команды приходящие для данного пользователя;

6
Курсы разработаны в компании «1С-Битрикс»

Если вы нашли неточность в тексте, непонятное объяснение, пожалуйста, сообщите нам об этом в комментариях.
Развернуть комментарии