Difference between revisions of "Ruby"

From Open Rail Data Wiki
Jump to navigation Jump to search
(Updated Ruby example code)
m (Redirected to new Ruby examples page)
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Install the [https://rubygems.org/gems/stomp Stomp] gem with <code>gem install stomp</code>.
+
#REDIRECT [[Ruby_Examples]]
 
 
The following code will connect to the datafeeds service, subscribe to the the RTPPM feed and print all messages to STDOUT.
 
 
 
To subscribe to multiple topics in a single connection, copy the <code>client.subscribe</code> section of code, change the topic name and the '-RTPPM' suffix
 
 
 
<pre>
 
require "stomp"
 
 
 
class NrPollerPoller
 
 
 
  # Initialize the poller
 
 
 
  def initialize
 
 
 
    @hostname = 'datafeeds.networkrail.co.uk'
 
    @username = 'nobody@example.com'
 
    @password = 'topsecretpassword'
 
 
 
    puts "Stomp consumer for Network Rail Open Data Distribution Service"
 
 
 
  end
 
 
 
 
 
  # Connect to the service and process messages
 
 
 
  def run
 
 
 
    client_headers = { "accept-version" => "1.1", "heart-beat" => "5000,10000", "client-id" => Socket.gethostname, "host" => @hostname }
 
    client_hash = { :hosts => [ { :login => @username, :passcode => @password, :host => @hostname, :port => 61618 } ], :connect_headers => client_headers }
 
 
 
    client = Stomp::Client.new(client_hash)
 
 
 
    # Check we have connected successfully
 
 
 
    raise "Connection failed" unless client.open?
 
    raise "Unexpected protocol level #{client.protocol}" unless client.protocol == Stomp::SPL_11
 
    raise "Connect error: #{client.connection_frame().body}" if client.connection_frame().command == Stomp::CMD_ERROR
 
 
 
    puts "Connected to #{client.connection_frame().headers['server']} server with STOMP #{client.connection_frame().headers['version']}"
 
 
 
 
 
    # Subscribe to the RTPPM topic and process messages
 
 
 
    client.subscribe("/topic/RTPPM_ALL", { 'id' => client.uuid(), 'ack' => 'client', 'activemq.subscriptionName' => Socket.gethostname + '-RTPPM' }) do |msg|
 
 
 
      puts msg.body
 
 
 
    end
 
 
 
    client.join
 
 
 
 
 
    # We will probably never end up here
 
 
 
    client.close
 
    puts "Client close complete"
 
 
 
  end
 
 
 
end
 
 
 
e = NrPollerPoller.new
 
e.run
 
</pre>
 

Latest revision as of 17:55, 9 July 2013

Redirect to: