If you are already using Realtime.co to implement Pub/Sub or Presence in your applications, but are looking to migrate to Ably, here's a quick guide on how you can implement the various Realtime.co features in Ably:

1. Connection:

  •      Using Realtime.co, you'll need to create a client, set a cluster URL and then have your client connect to your application, as shown below:
ortcClient = RealtimeMessaging.createClient();
ortcClient.connect('INSERT_YOUR_APP_KEY_HERE', 'testToken');

  •     Using Ably, you can simply connect to the realtime library using your Ably API key if you wish to use Basic Authentication. 
var realtime = new Ably.Realtime({ key: apiKey });

Note that you can also use Token Authentication which is more secure in that it does not expose your Ably API key to your end clients.

2. Pub/Sub:

  • Using Realtime.co, you needed to subscribe and publish data to a channel in the following way:            
ortcClient.onConnected = function (ortc) {
  console.log("Connected to " + ortcClient.getUrl());
  ortcClient.subscribe('myChannel', true, function (ortc, channel, message) {
var myMessage = { foo: "bar" };
ortcClient.send('myChannel', JSON.stringify(myMessage));  

  • Using Ably, you need to first attach to a channel, then subscribing and publishing data is quite similar as shown below:
var channel = realtime.channels.get("sport");
channel.subscribe(function(msg) {
  console.log("Received: " + JSON.stringify(msg.data));
channel.publish("update", { "team": "Man United" });

In both Realtime.co and Ably, you can set up subscribe filters. However, in Ably, it is very straight forward to do and is not different from a regular subscription unlike with Realtime.co. Read the complete documentation for more examples.

3. Presence:

Using Realtime.co, you need to enable presence and then request presence data as demonstrated in their documentation.

var ortcNodeclient = require('IbtRealTimeSJNode').IbtRealTimeSJNode;
var ortcClient = new ortcNodeclient();
  applicationKey : '<ORTC_APPLICATION_KEY>',
  channel : 'myChannel',
  privateKey : '<ORTC_PRIVATE_KEY>',
  url : 'http://ortc-developers.realtime.co/server/2.1/',
  isCluster : true,
  metadata : true
    console.log('Presence enable',result);

Using Ably, you can simply attach to a presence channel and subscribe to it in order to continue receiving updates.

var Ably = require('ably');
var realtime = new Ably.Realtime({
  key: 'xVLyHw.iMgyZQ:x1Z00B9Gk-_svk5B',
  clientId: 'bob' }
var channel = realtime.channels.get('bag-abs-tab');
channel.presence.subscribe('enter', function(member) {
  alert('Member ' + member.clientId + ' entered');

/* Subscribe to presence enter events */
channel.presence.subscribe('enter', function(member) {
  console.log(member.data); // => not moving

/* Subscribe to presence update events */
channel.presence.subscribe('update', function(member) {
  console.log(member.data); // => travelling North

4. Webhooks:

    Both Realtime.co's Webhooks feature as well as Ably's Webhooks feature are similar in their implementation.