Ably
A Ruby client library for ably.io, the real-time messaging service.
Documentation
Visit https://ably.io/documentation for a complete API reference and more examples.
Installation
The client library is available as a gem from RubyGems.org.
Add this line to your application's Gemfile:
gem 'ably'
And then install this Bundler dependency:
$ bundle
Or install it yourself as:
$ gem install ably
Using the Realtime API
Introduction
All examples must be run within an EventMachine reactor as follows:
EventMachine.run do
# ...
end
All examples assume a client has been created as follows:
client = Ably::Realtime.new(api_key: "xxxxx")
Connection
Successful connection:
client.connection.connect do
# successful connection
end
Failed connection:
connection_result = client.connection.connect
connection_result.errback = Proc.new do
# failed connection
end
Subscribing to a channel
Given:
channel = client.channel("test")
Subscribe to all events:
channel.subscribe do ||
[:name] #=> "greeting"
[:data] #=> "Hello World!"
end
Only certain events:
channel.subscribe("myEvent") do ||
[:name] #=> "myEvent"
[:data] #=> "myData"
end
Publishing to a channel
channel.publish("greeting", "Hello World!")
Querying the History
channel.history do ||
# Ably::Models::PaginatedResource
.first # Ably::Models::Message
.length # number of messages in the retrieved history page
.next_page # Ably::Models::PaginatedResource
end
Presence on a channel
channel.presence.enter(data: 'john.doe') do |presence|
presence.get #=> [Array of members present]
end
Querying the Presence History
channel.presence.history do ||
.first.action # Any of :enter, :update or :leave
.first.client_id
.first.data
.next_page # Ably::Models::PaginatedResource
end
Using the REST API
Introduction
Unlike the Realtime API, all calls are synchronous and are not run within an EventMachine reactor.
All examples assume a client and/or channel has been created as follows:
client = Ably::Rest.new(api_key: "xxxxx")
channel = client.channel('test')
Publishing a message to a channel
channel.publish("myEvent", "Hello!") #=> true
Querying the History
channel.history #=> #<Ably::Models::PaginatedResource ...>
Presence on a channel
channel.presence.get # => #<Ably::Models::PaginatedResource ...>
Querying the Presence History
channel.presence.history # => #<Ably::Models::PaginatedResource ...>
Generate Token and Token Request
client.auth.request_token
# => #<Ably::Models::Token ...>
client.auth.create_token_request
# => {"id"=>...,
# "clientId"=>nil,
# "ttl"=>3600,
# "timestamp"=>...,
# "capability"=>"{\"*\":[\"*\"]}",
# "nonce"=>...,
# "mac"=>...}
Fetching your application's stats
client.stats #=> PaginatedResource [{:channels=>..., :apiRequests=>..., ...}]
Dependencies
If you only need to use the REST features of this library and do not want EventMachine as a dependency, then you should use the Ably Ruby REST gem.
Support and feedback
Please visit https://support.ably.io/ for access to our knowledgebase and to ask for any assistance.
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Ensure you have added suitable tests and the test suite is passing(
bundle exec rspec) - Push to the branch (
git push origin my-new-feature) - Create a new Pull Request
License
Copyright (c) 2015 Ably, Licensed under an MIT license. Refer to LICENSE.txt for the license terms.
