Stomp::subscribe
stomp_subscribe
(PECL stomp >= 0.1.0)
Stomp::subscribe -- stomp_subscribe — Registers to listen to a given destination
说明
面向对象风格 (method):
public Stomp::subscribe(string
$destination
, array $headers
= ?): bool过程化风格:
stomp_subscribe(resource
$link
, string $destination
, array $headers
= ?): boolRegisters to listen to a given destination.
参数
-
link
-
仅对过程化样式:由 stomp_connect() 返回的 stomp 连接标识符。
-
destination
-
Destination to subscribe to.
-
headers
-
关联数组包含附加的头信息(例如: receipt)。
返回值
成功时返回 true
, 或者在失败时返回 false
。
范例
See stomp_ack().
注释
小技巧
Stomp is inherently asynchronous. Synchronous communication can be implemented adding a receipt header. This will cause methods to not return anything until the server has acknowledged receipt of the message or until read timeout was reached.

User Contributed Notes 1 note
holycd ¶
4 years ago
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