History

Channel object

The Realtime Channel object exposes the following public method to obtain Message history.

Methods

history

Deferrable history(Hash option) → yields PaginatedResult<Message>

Gets a paginated set of historical messages for this channel.

Parameters

ParameterDescriptionType
optionan optional set of key value pairs containing the query parametersHash
&blockyields a PaginatedResult<Message> objectBlock

options parameters

PropertyDescriptionType
:startEarliest Time or time in milliseconds since the epoch for any messages retrieved.
Default: beginning of time
Int or Time
:endLatest Time or time in milliseconds since the epoch for any messages retrieved.
Default: current time
Int or Time
:direction:forwards or :backwards.
Default: :backwards
Symbol
:limitMaximum number of messages to retrieve per page, up to 1,000.
Default: 100
Integer
:until_attachwhen true, ensures message history is up until the point of the channel being attached. See continuous history for more info. Requires the direction to be backwards (the default). If the Channel is not attached, or if direction is set to forwards, this option will result in an error.
Default: false
Boolean

Returns

A Deferrable object is returned from the method.

On success, the registered success blocks for the Deferrable and any block provided to the method yield a PaginatedResult that encapsulates an array of Message objects corresponding to the current page of results. PaginatedResult supports pagination using next() and first() methods.

Failure to retrieve the message history will trigger the errback callbacks of the Deferrable with an ErrorInfo object with the failure reason.

Presence object

Realtime Presence object exposes the following public method to obtain presence event history such as enter, update and leave events. These events are represented as PresenceMessage objects.

Methods

history

Deferrable history(Hash option) → yields PaginatedResult<PresenceMessage>

Gets a paginated set of historical presence events for this channel.

Parameters

ParameterDescriptionType
optionan optional set of key value pairs containing the query parametersHash
&blockyields a PaginatedResult<PresenceMessage> objectBlock

options parameters

PropertyDescriptionType
:startEarliest Time or time in milliseconds since the epoch for any presence events retrieved.
Default: beginning of time
Int or Time
:endLatest Time or time in milliseconds since the epoch for any presence events retrieved.
Default: current time
Int or Time
:direction:forwards or :backwards.
Default: :backwards
Symbol
:limitMaximum number of presence events to retrieve up to 1,000.
Default: 100
Integer
:until_attachwhen true, ensures presence message history is up until the point of the channel being attached. See continuous history for more info. Requires the direction to be backwards (the default). If the Channel is not attached, or if direction is set to forwards, this option will result in an error.
Default: false
Boolean

Returns

A Deferrable object is returned from the method.

On success, the registered success blocks for the Deferrable and any block provided to the method yield a PaginatedResult that encapsulates an array of PresenceMessage objects corresponding to the current page of results. PaginatedResult supports pagination using next() and first() methods.

Failure to retrieve the presence event history will trigger the errback callbacks of the Deferrable with an ErrorInfo object with the failure reason.

Ably::Models::Message Enum

A Message represents an individual message that is sent to or received from Ably.

Properties

PropertyDescriptionType
nameThe event name, if provided.String
dataThe message payload, if provided.String, Binary (ASCII-8BIT String), Hash, Array
extrasMetadata and/or ancillary payloads, if provided. Valid payloads include push, headers (a map of strings to strings for arbitrary customer-supplied metadata), ephemeral, and privileged objects.Hash, Array
idA Unique ID assigned by Ably to this message.String
client_idThe client ID of the publisher of this message.String
connection_idThe connection ID of the publisher of this message.String
connection_keyA connection key, which can optionally be included for a REST publish as part of the publishing on behalf of a realtime client functionality.String
timestampTimestamp when the message was first received by the Ably, as a Time object.Time
encodingThis will typically be empty as all messages received from Ably are automatically decoded client-side using this value. However, if the message encoding cannot be processed, this attribute will contain the remaining transformations not applied to the data payload.String

Message constructors

Message.fromEncoded

Message.fromEncoded(Object encodedMsg, ChannelOptions channelOptions?) → Message

A static factory method to create a Message from a deserialized Message-like object encoded using Ably's wire protocol.

Parameters
ParameterDescriptionType
encodedMsga Message-like deserialized object.Object
channelOptionsan optional ChannelOptions. If you have an encrypted channel, use this to allow the library to decrypt the data.Object
Returns

A Message object

Message.fromEncodedArray

Message.fromEncodedArray(Object[] encodedMsgs, ChannelOptions channelOptions?) → Message[]

A static factory method to create an array of Messages from an array of deserialized Message-like object encoded using Ably's wire protocol.

Parameters
ParameterDescriptionType
encodedMsgsan array of Message-like deserialized objects.Array
channelOptionsan optional ChannelOptions. If you have an encrypted channel, use this to allow the library to decrypt the data.Object
Returns

An Array of Message objects

Ably::Models::PresenceMessage Enum

A PresenceMessage represents an individual presence update that is sent to or received from Ably.

Properties

PropertyDescriptionType
actionthe event signified by a PresenceMessage. See PresenceMessage.actionenum { :absent, :present, :enter, :leave, :update }
dataThe presence update payload, if providedString, Binary (ASCII-8BIT String), Hash, Array
extrasMetadata and/or ancillary payloads, if provided. The only currently valid payloads for extras are the push, ref and privileged objects.Hash, Array
idUnique ID assigned by Ably to this presence updateString
client_idThe client ID of the publisher of this presence updateString
connection_idThe connection ID of the publisher of this presence updateString
timestampTimestamp when the presence update was received by Ably.Time
encodingThis will typically be empty as all presence updates received from Ably are automatically decoded client-side using this value. However, if the message encoding cannot be processed, this attribute will contain the remaining transformations not applied to the data payloadString

PresenceMessage constructors

PresenceMessage.fromEncoded

PresenceMessage.fromEncoded(Object encodedPresMsg, ChannelOptions channelOptions?) → PresenceMessage

A static factory method to create a PresenceMessage from a deserialized PresenceMessage-like object encoded using Ably's wire protocol.

Parameters
ParameterDescriptionType
encodedPresMsga PresenceMessage-like deserialized object.Object
channelOptionsan optional ChannelOptions. If you have an encrypted channel, use this to allow the library to decrypt the data.Object
Returns

A PresenceMessage object

PresenceMessage.fromEncodedArray

PresenceMessage.fromEncodedArray(Object[] encodedPresMsgs, ChannelOptions channelOptions?) → PresenceMessage[]

A static factory method to create an array of PresenceMessages from an array of deserialized PresenceMessage-like object encoded using Ably's wire protocol.

Parameters
ParameterDescriptionType
encodedPresMsgsan array of PresenceMessage-like deserialized objects.Array
channelOptionsan optional ChannelOptions. If you have an encrypted channel, use this to allow the library to decrypt the data.Object
Returns

An Array of PresenceMessage objects

Ably::Models::PresenceMessage::ACTION

Ably::Models::PresenceMessage::ACTION is an enum-like value representing all the Realtime Presence states & events. ACTION can be represented interchangeably as either symbols or constants.

Symbol states

Ruby

1

2

3

4

5

:absent  # => 0 (reserved for internal use)
:present # => 1
:enter   # => 2
:leave   # => 3
:update  # => 4

Constant states

Ruby

1

2

3

4

5

PresenceMessage::ACTION.Absent  # => 0 (internal use)
PresenceMessage::ACTION.Present # => 1
PresenceMessage::ACTION.Enter   # => 2
PresenceMessage::ACTION.Leave   # => 3
PresenceMessage::ACTION.Update  # => 4

Example usage

Ruby

1

2

3

4

5

6

7

8

# Example with symbols
presence.on(:attached) { ... }

# Example with constants
presence.on(Ably::Models::PresenceMessage::ACTION.Enter) { ... }

# Interchangeable
Ably::Models::PresenceMessage::ACTION.Enter == :enter # => true

Ably::Models::PaginatedResult

A PaginatedResult is a type that represents a page of results for all message and presence history, stats and REST presence requests. The response from a Ably REST API paginated query is accompanied by metadata that indicates the relative queries available to the PaginatedResult object.

Properties

PropertyDescriptionType
itemscontains the current page of results (for example an Array of Message or PresenceMessage objects for a channel history request)Array <Message, Presence, Stats>

Methods

first

PaginatedResult first()

Returns a new PaginatedResult for the first page of results. When using the Realtime library, the first method returns a Deferrable and yields a PaginatedResult.

has_next?

Boolean has_next?

Returns true if there are more pages available by calling next and returns false if this page is the last page available.

last?

Boolean last?

Returns true if this page is the last page and returns false if there are more pages available by calling next available.

next

PaginatedResult next()

Returns a new PaginatedResult loaded with the next page of results. If there are no further pages, then null is returned. When using the Realtime library, the first method returns a Deferrable and yields a PaginatedResult.

Example

Ruby

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

# When using the REST sync library
first_page = channel.history
puts "Page 0 item 0: #{first_page.items[0].data}"
if first_page.has_next?
  next_page = first_page.next
  puts "Page 1 item 1: #{next_page.items[1].data}"
  puts "Last page?: #{next_page.is_last?}"
end

# When using the Realtime EventMachine library
channel.history do |first_page|
  puts "Page 0 item 0: #{first_page.items[0].data}"
  if first_page.has_next?
    first_page.next do |next_page|
      puts "Page 1 item 1: #{next_page.items[1].data}"
      puts "Last page?: #{next_page.is_last?}"
    end
  end
end