Pusher Alternative

Is Pusher's pricing breaking your neck? Scaledrone offers a top of the line realtime messaging service for half of the price!

Get started for free
Familiar features
Scaledrone offers a similar set of features to Pusher: JavaScript & mobile API clients — send data from any platform to another.
Affordable pricing
Whether you have a thousand or a million users Scaledrone makes sure realtime messaging will not break the bank.
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.

Sample pricing

Max concurrent connections
5000
5000
Messages per day
10 Million
10 Million
SSL protection
Yes
Yes
Message history
Yes
No
Price
$99 / Month
$299 / Month
Scaledrone is 3x cheaper

Super simple API

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