Build awesome realtime web and mobile apps

Pusher is a hosted API for quickly, easily and securely adding scalable realtime functionality to web and mobile apps.

Pusher Realtime Cloud diagram
  • Groupon
  • CloudApp
  • MailChimp
  • Word2
  • Slideshare
  • Gauges

We believe that your developer time is best spent making awesome features, not creating infrastructure.

We provide a simple set of APIs and libraries that allow you to build rich realtime features in hours rather than days.

With powerful developer tools, and libraries in tons of languages, it's a doddle to get up and running!

Libraries for everyone

Read the quickstart guide

Reduce risk for your projects by outsourcing your realtime infrastructure to a trusted platform maintained by experts.

Let us worry about compatibility issues, managing servers, and being woken up in the middle of the night.

The Pusher Realtime Cloud has been designed from the ground up to scale seamlessly to meet demand. Coupled with this is a clustered, fully redundant architecture hosted within Amazon EC2.

Scaling infrastructure to maintain millions of long running connections is not trivial, but we've worked out the tricks to handle it with ease.

40billion

messages delivered

We understand that your data is precious, so we provide mechanisms for protecting it.

Pusher's advanced client authentication handshake guarantees messages only go to the people you expect.

Additionally, we allow you to connect our service via SSL for extra peace of mind.

At the core of Pusher is the new HTML5 WebSocket protocol. This enables a low latency bi-directional socket to be established between browsers, mobiles apps and Pusher.

Once connected, messages can be pushed to clients with extremely low latency, making Pusher suitable for building multiplayer games.

5ms

average msg routing speed within Pusher

Try it out now

Send yourself a quick message

Pusher is great for...

  • Chat
  • Activity Streams
  • Notifications
  • Collaboration
  • Multiplayer games
  • Realtime data
  • Dashboards
  • 2nd Screen experiences

How it works...

Publish

Pusher.trigger('my-channel', 'my-event', { message: 'hello world' }) $pusher->trigger('my-channel', 'my-event', array('message' => 'hello world')); pusher.trigger('my-channel', 'my-event', { "message": "hello world" } ); ObjectPusherRequest request = new ObjectPusherRequest("my-channel", "my-event", new { message = "hello world" }); provider.Trigger(request);

Subscribe

var channel = pusher.subscribe('my-channel'); channel.bind('my-event', function(data) { alert('Received my-event with message: ' + data.message); }); PTPusherChannel *channel = [client subscribeToChannelNamed:@"my-channel"]; [channel bindToEventNamed:@"my-event" handleWithBlock:^(PTPusherEvent *channelEvent) { // do something }];