PHP Example: Difference between revisions
BarryCarlyon (talk | contribs) added a non pecl version |
BarryCarlyon (talk | contribs) Date Notes |
||
Line 37: | Line 37: | ||
Further Documentation: http://www.php.net/manual/en/class.stomp.php | Further Documentation: http://www.php.net/manual/en/class.stomp.php | ||
PECL Library Last Updated: 2010-10-12 | |||
===STOMP LIbrary=== | ===STOMP LIbrary=== | ||
Line 62: | Line 64: | ||
$con->disconnect(); | $con->disconnect(); | ||
</code> | </code> | ||
Adjusted Version Last Updated: 2011-03-03 |
Revision as of 22:34, 26 July 2012
PECL Stomp Extension Example
Requires PECL STOMP package (just type "pecl install stomp" in the command line).
<?php
// Network Rail Stomp Handler example by ian13
$server = "tcp://datafeeds.networkrail.co.uk:61618";
$user = "username";
$password = "password";
$channel = "TRAIN_MVT_ALL_TOC";
$con = new Stomp($server, $user, $password);
if (!$con) {
die('Connection failed: ' . stomp_connect_error());
}
$con->subscribe("/topic/" . $channel);
while($con){
if ($con->hasFrame()){
$msg = $con->readFrame();
foreach (json_decode($msg->body) as $event) {
// do stuff with $event here
}
$con->ack($msg);
}
}
die('Connection lost: ' . time());
?>
You can additionally use a client-id header.
This means if you disconnect, when you reconnect, the server should resend the messages that you missed whilst offline.
$con = new Stomp($server, $user, $password, array('client-id' => 'somename');
Further Documentation: http://www.php.net/manual/en/class.stomp.php
PECL Library Last Updated: 2010-10-12
STOMP LIbrary
The Stomp Client from Fuse Source. It has some minor issues, it injects spaces in the username/password and sleeps on message retrieval. An adjusted version can be grabbed from here or here
require_once('Stomp.php');
$con = new Stomp('tcp://datafeeds.networkrail.co.uk:61618/');
$con->clientId = 'someclient';
$con->connect($username, $password);
$con->subscribe("/topic/TRAIN_MVT_ALL_TOC");
$msg = $con->readFrame();
if ($msg != null) {
foreach (json_decode($msg->body) as $event) {
// do stuff with $event here
}
$con->ack(msg);
}
$con->disconnect();
Adjusted Version Last Updated: 2011-03-03