Dynamic real-time with Pusher

Build live data messaging infrastructure for all your apps with our flexible hosted APIs.

Build live data messaging infrastructure for all your apps with our flexible hosted APIs.

Real-time visualizations are a default standard for all modern web and mobile applications.

When it comes to time-critical marketplaces which rely on fast decision making or customer satisfaction, real-time data visualisations are high priority features.

Think about the maps we follow to see how our food delivery in progressing

The dashboards that stock traders use to analyse the market

Or the virtual workspaces you collaborate on…

Real-time software infrastructure offers a level of responsiveness that a user senses as immediate. Using real-time technology allows your apps to send and receive data in an event-driven way. This publish/subscribe model (Pub/Sub) gets information to a user interface in milliseconds.

Building reliable, scalable real-time infrastructure is tricky, time consuming and expensive.

At Pusher we power dynamic real-time experiences for all your apps and let you focus on creating high priority features without getting stuck in messy infrastructure.

Pusher APIs are:

Simple

You can be up and running with Pusher in minutes. Managed APIs combined with SDKs that integrate seamlessly mean you will build the features you need, fast, and focus on shipping value.

Scalable

Loved by developers and trusted by giants, we scale with you. From 1 connection to millions, our service has you covered.

Reliable

With over 99.98% uptime, premium support and stress-free fallbacks, you can be confident that we’ll keep your real-time running. We power global events for major customers.

Find out what other developers are building with Pusher

Simple to get started

With our client and server side libraries, you’re ready to get started today

With our client and server side libraries, you’re ready to get started today

Publish

$pusher->trigger('my-channel', 'my-event', [

'message' => 'hello world'

]);

$pusher->trigger('my-channel', 'my-event', [

'message' => 'hello world'

]);

pusher.trigger('my-channel', 'my-event', {

"message": "hello world"

});

pusher.trigger('my-channel', 'my-event', {

message: 'hello world'

})

pusher.Trigger('my-channel', 'my-event', new {

message = "hello world"

});

pusher.trigger("my-channel", "my-event", Collections.singletonMap("message", "hello world"));

pusher.trigger('my-channel', 'my-event', {

'message': 'hello world'

})

pusher.Trigger("my-channel", "my-event", map[string]string{

"message": "hello world",

})

Subscribe

var channel = pusher.subscribe('my-channel');

channel.bind('my-event', function(data) {

alert('Received my-event with message: ' + data.message);

});

var channel = pusher.subscribe('my-channel');

channel.bind('my-event', function(data) {

alert('Received my-event with message: ' + data.message);

});

Channel channel = pusher.subscribe("my-channel");

channel.bind("my-event", new SubscriptionEventListener() {

@Override

public void onEvent(String channel, String event, String data) {

System.put.println("Received event with data: " + data);

}

});

let channel = pusher.subscribe("my-channel")


channel.bind(eventName: "my-event", callback: { (optionalData: Any?) -> Void in

if let data = optionalData {

print("Received event with data: \(data)")

}

})

PusherChannel *channel = [pusher subscribeWithChannelName:@"my-channel"];


[channel bindWithEventName:@"my-event" callback:^void (NSDictionary *data) {

NSString *message = data[@"message"];

NSLog(@"message received: %@", message);

}];

Get started for free with our sandbox plan

Including 100 connections, 200k daily messages and unlimited channels, Alternatively take a look at our simple self-serve packages, or speak to the team about a tailored solution to your enterprise requirements.

By developers, for developers

With 40+ libraries, we make it easy build realtime, whatever your stack

Client libraries
Official server libraries