Send realtime data to your users

We take care of complex realtime infrastructure problems so you can focus on what you enjoy - building awesome apps

Get started for free

Free for up to 20 concurrent users and 100,000 daily events

Hey! Check out the live demo. Paste the snippet into your Terminal to push a message here 👇
curl -H "Content-Type: application/json" \
   -X POST \
   -d 'Hello from Scaledrone' \
   https://api2.scaledrone.com/KtJ2qzn3CF3svSFe/notifications/publish
Copy and paste this into Terminal

Use Cases

Realtime updates

Keep a realtime state of your data. Create live maps, realtime dashboard & much more.

Chat

Create realtime chat apps, add live user lists and integrate it with your existing systems.

Notifications

Add realtime notifications to your apps with just a few lines of code.
Realtime updates
Keep a realtime state of your data. Use it to create live maps, realtime dashboard & much more.
Chat
Create realtime chat apps, add live users list and integrate it with your existing systems.
Notifications
Add realtime notifications to your apps with just a few lines of code.

5.5 billion messages delivered

Build apps, not infrastructure
Scaledrone provides features like realtime messaging, message history and user presence so you can focus on the business logic.
Scaling realtime infrastructure is complex
Scaledrone makes sure you never have to feel pain when growing, whether you have a hundred or a million users.
Save time and money
Let us take care of your realtime data, so you don’t have to waste endless developer hours managing infrastructure — so your developers can stay focused on building great apps.

Get started in minutes

PUBLISH MESSAGES
REST
const drone = new Scaledrone('CHANNEL_ID'); drone.on('open', error => { drone.publish({ room: 'notifications', message: 'Hello from JavaScript!' }); });import Scaledrone scaledrone = Scaledrone(channelID: "your-channel-id") scaledrone.delegate = self scaledrone.connect() func scaledroneDidConnect(scaledrone: Scaledrone, error: NSError?) { scaledrone.publish(message: "Hello from Swift", room: "notifications") }final Scaledrone drone = new Scaledrone("CHANNEL_ID"); drone.connect(new Listener() { @Override public void onOpen() { drone.publish("notifications", myObject); } }const Scaledrone = require('scaledrone-node-push'); const sd = new ScaleDrone({ channelId: 'channel_id', secretKey: 'secret_key' }); sd.publish('notifications', {foo: 'bar'});import "github.com/ScaleDrone/scaledrone-go" func main() { client := scaledrone.NewBasicAuthClient("channel_id", "secret_key") _ = client.Publish([]byte("Hello Go"), "notifications") }require 'scaledrone' sd = ScaleDrone.new({ channel_id: 'channel_id', secret_key: 'secret_key' }) sd.publish({foo: 'bar'}, 'notifications')from scaledrone import ScaleDrone sd = ScaleDrone('channel_id', 'secret_key') sd.publish('notifications', {'foo': 'bar'})$auth = array( 'channel_id' => 'channel_id', 'secret_key' => 'secret_key' ); $sd = new ScaleDrone\Client($auth); $message = ['foo' => 'bar']; $sd->publish('notifications', $message);curl -H "Content-Type: application/json" \ -X POST \ -d '{"message": "Hello from ScaleDrone"}' \ https://api2.scaledrone.com/KtJ2qzn3CF3svSFe/notifications/publish
SUBSCRIBE TO MESSAGES
const drone = new Scaledrone('CHANNEL_ID'); drone.on('open', error => { const room = drone.subscribe('notifications'); room.on('data', message => { console.log('Received message', message); }); });import Scaledrone func scaledroneDidConnect(scaledrone: Scaledrone, error: NSError?) { let room = scaledrone.subscribe(roomName: "notifications") room.delegate = self } func scaledroneRoomDidReceiveMessage(room: ScaledroneRoom, message: String) { print(message) }final Scaledrone drone = new Scaledrone("CHANNEL_ID"); drone.connect(new Listener() { @Override public void onOpen() { drone.subscribe("myroom", new RoomListener() { @Override public void onMessage(Room room, JsonNode message) { System.out.println("Message: " + message.asText()); } //... } } }const Scaledrone = require('scaledrone-node'); const drone = new Scaledrone('CHANNEL_ID'); drone.on('open', error => { const room = drone.subscribe('notifications'); room.on('data', message => { console.log('Received message', message); }); });

Features

Enhanced WebSockets
Scaledrone uses WebSockets when possible and falls back to technologies such as XHR streaming, JSONP polling and XHR polling when needed.
Live user events
Keep track of who’s connected. Realtime events will notify you of users joining and leaving.
Authentication & Access levels
Define precise access rules for every user. Easily integrate it with your existing authentication services.
Get Started For Free