Stomp::subscribe
stomp_subscribe
(PECL stomp >= 0.1.0)
Stomp::subscribe -- stomp_subscribe — Регистрирует подписку на указанную рассылку
Описание
Объектно-ориентированный стиль (метод):
$destination
[, array $headers
] )Процедурный стиль:
$link
, string $destination
[, array $headers
] )Регистрирует подписку на указанную рассылку.
Список параметров
-
link
-
Только для процедурного стиля: Идентификатор соединения stomp, полученный из stomp_connect().
-
destination
-
Рассылка, на которую необходимо зарегистрировать подписку.
-
headers
-
Ассоциативный массив, содержащий дополнительные заголовки (пример: receipt).
Возвращаемые значения
Возвращает TRUE
в случае успешного завершения или FALSE
в случае возникновения ошибки.
Примечания
Stomp асинхронен по своей сути. Синхронная связь может быть реализована добавлением receipt-заголовка. Это заставит методы ничего не возвращать, пока сервер не подтвердит получение сообщения или не будет достигнут таймаут сообщения.
Примеры
См. stomp_ack().
- Функция Stomp::abort() - Отменяет выполнение текущей транзакции
- Функция Stomp::ack() - Подтверждает получение сообщения
- Функция Stomp::begin() - Создает транзакцию
- Функция Stomp::commit() - Выполняет текущую транзакцию
- Функция Stomp::__construct() - Открывает соединение
- Функция Stomp::__destruct() - Закрывает Stomp-соединение
- Функция Stomp::error() - Возвращает последнюю ошибку Stomp
- Функция Stomp::getReadTimeout() - Возвращает время максимального ожидания операции чтения
- Функция Stomp::getSessionId() - Возвращает идентификатор текущей сессии Stomp
- Функция Stomp::hasFrame() - Проверяет, возможно ли чтение фрейма
- Функция Stomp::readFrame() - Выполняет операцию чтения следующего фрейма
- Функция Stomp::send() - Отправляет сообщение
- Функция Stomp::setReadTimeout() - Устанавливает предельное время ожидания операции чтения
- Функция Stomp::subscribe() - Регистрирует подписку на указанную рассылку
- Функция Stomp::unsubscribe() - Удаляет существующую подписку
Коментарии
Using Topics from PHP over Stomp
$clientId = 'test:dev';
$topic = '/topic/perm.user';
try {
$stomp = new Stomp('tcp://localhost:61613','system','manager', array('client-id'=> $clientId ));
} catch(StompException $e) {
die('Connection failed: ' . $e->getMessage());
}
$isSubscribe = $stomp->subscribe($topic);
while($isSubscribe){
if ($stomp->hasFrame()) {
$frame = $stomp->readFrame();
if ($frame != NULL) {
print "Received: " . $frame->body . " - time now is " . date("Y-m-d H:i:s"). "\n";
// $stomp->ack($frame);
}
// sleep(1);
}
else {
print "No frames to read\n";
}
}
if($isSubscribe){
$stomp->unsubscribe($topic);
unset($stomp);
}
Can not receive the topic frame