Update June 2020: Ably's Client Library SDKs 1.2 are released, along with Message Delta Compression.
Today we’re releasing Ably Realtime 1.1 client library SDKs. This is a backwards-compatible release bringing improvements and new features, such as push notifications and batch processing, to the libraries. This is a summary announcement post so be sure to check the changelog for a full breakdown of the changes. What’s new in 1.1?
Transient publishing supported on channels
Previously, when creating a channel and publishing a message using realtime client SDKs, the client library would attach to the channel and then publish the message. Where publishing only was needed this resulted in the Ably service sending all messages to the client as soon as it attached to the channel, even if no subscribe listeners were registered.
With 1.1 you can publish to a channel without attaching to it and no longer worry about the client inadvertently receiving all messages published on that channel. Read more in the docs.
Push notifications are now generally available
Thanks to those of you who got involved in beta testing push notifications. After a some tweaking push notifications are now generally available!
In the coming weeks, we’ll be sending out an update dedicated to push notifications. This will include links to documentation, tutorials, notes on upgrading from the beta release, and summarising all the push notification features now available to all of you using Ably.
That said, there’s nothing stopping you from implementing push right away by heading over to the current push notification docs. However, if you’re already using push notifications there are some backwards compatible changes you should be aware of when upgrading to the 1.1 GA release, specifically in regards to authenticating devices with the Ably service. If you want to upgrade before our dedicated push update, get in touch.
Note that iOS and Android are push targets whilst all other client libraries provide push admin support for registering devices, managing subscriptions, publishing messages etc. We’re also considering adding web push notification support to our JS library so let us know if you need support for a browser target.
Experimental batch REST publishing
In addition to new, stable features this 1.1 release brings access to some undocumented, experimental features available through request method but not yet available in the SDKs.
The batch REST publishing API allows a single REST operation to publish one or more messages to one or more channels in a single operation. The method has been extended to support all HTTP verbs available. Note: this is not available in the SDKs.
We’re currently writing documentation for this feature. Once it’s done you’ll find it in Ably’s bleeding edge documentation.
Client library access to the new Ably DSX
Some client libraries now support access to the new Ably DSX stats. The Ably DSX allows businesses to distribute realtime data without having to deal with the complexities of protocol interoperability, scale, performance and everything else that comes with operating and managing realtime infrastructure at scale. Find out more on the Ably DSX.
Significant client library-specific updates
- iOS is now multi-platform with support for tvOS and macOS
- Push GA as a target (see above)
- Push GA as a target (see above)
- We significantly upgraded the .NET library from 0.8 to 1.1. That’s right, we completely skipped a 1.0 release.
- We added Unity Experimental support ?
- There’s now wider platform support with .NET 4, .NET Core, Mono, UWP, Xamarin Android, and iOS.
- The Go library also makes a significant leap from 0.8 to 1.1.
- For now this applies only to the REST library due to high demand from users heavily reliant on Go for their server-side architecture.
Other new 1.1 features and improvements
- A client ID specified in the ClientOptions, when supported by the authentication scheme used, is now more consistently applied to all operations including REST publishes, or Realtime connections. See docs.
- Our client library SDKs will now store any channels they connect to for the lifetime of the client instance. And if a disconnection occurs, the client library SDKs will remember the channels they were connected to and automatically reconnect to them once they are back on a network.
- Developer UX is better when it comes to error logging. We now include a link to documentation relating to that specific error code to help diagnose and resolve issues more quickly. See example documentation for error code 40103.
- We’ve made various bugfixes and improvements to the stability and performance of the Ably Platform including more reliable processing of REST operations when a datacenter is unavailable and a client library is using fallback hosts to route around network or datacenter issues.
See the changelog for a full breakdown of new features, bugfixes, and stability improvements.
Idempotent publishing ensures that a failed publish to a network failure, or any other failure, can safely be retried without worrying that a message may be published more than once. In effect, we’re adding exactly-once semantics to our REST publishes over a protocol (HTTP) that has historically had shortcomings at a protocol level in regards to idempotent operations.
We intended to idempotent publishing to be included in this 1.1 release but we’re not ready to release it into the global cluster just yet. Just to be clear: idempotent publishing is supported in all 1.1 client libraries, it’s just not enabled with this release. We’ll be enabling it server-side in the coming weeks. Once we do, we’ll let you know, so keep an eye out.
Upgrade to continue getting the best out of Ably
There’s some exciting new features in this 1.1 client library SDKs release. We highly recommend you upgrade to take advantage of the improved APIs, new features and functionality, and fixes and improvements. You can find the full changelog here. And if you’ve got any questions, let us know.