Mozilla Push Service

Mozilla Push Service is the server-side project supporting Push Notifications in Firefox. The current server is autopush. You can learn how to use the web based API to push messages to web applications running Push by reading the autopush HTTP API document.

Architecture

Push Architecture Diagram

Code

The current production deployment of Push is a Python-based websocket server named autopush, developed on Github. The Push Service team has several repositories for development of the Push Server, and supporting tooling.

See the architecture image for reference on what components each of these code pieces correspond to.

People and Places

Mail Lists and IRC

Additional ways to get in contact with the team:

Sending Push Messages

If you are interested in using WebPush for your application, there are a number of resources that should help.

If you are adding Push to your browser or progressive enhancement application, see Using the Push API on MDN.

If you are creating a service that sends Push messages to remote browser applications, see HTTP Endpoints for Notifications.

Terminology

The Push Service uses a range of terminology that can be difficult at first to keep straight. This is a list of commonly used terms and phrases with their meaning in the context of Push.

For an overview of how these terms fit together to deliver a push message to a user-agent, see the Firefox Push Notification high-level diagram. This page also includes descriptions of related technologies that help to deliver a cohesive Push Notification experience.

Where applicable, these match the Webpush Spec Terminology.

Application
Both the sender and ultimate consumer of push messages. Many applications have components that are run on a user agent and other components that run on servers.
Application Server
The component of an application that runs on a server and requests the delivery of a push message.
Channel ID
Legacy terminology for a Push Message Subscription utilized by WebPush and the websocket client protocol.
Endpoint
A REST-ful HTTP URL uniquely associated with a Push Message Subscription. This is referred to as a "push resource" in the WebPush specification.
Push Message Subscription
A message delivery context that is established between the user agent and the push service and shared with the application server. All push messages are associated with a push message subscription.
Push Message
A message sent from an application server to a user agent via a push service.
Push Message Receipt
A message delivery confirmation sent from the push service to the application server.
Push Service
A service that delivers push messages to user agents.
SimplePush
Deprecated Firefox OS specific Push system that carries no data, only an incrementing version number. The Mozilla Push Service no longer continues to support this legacy API.
UAID
A globally unique UserAgent ID. Used by the Push Service to associate clients utilizing the websocket protocol with their associated channel ID's. This string is always a UUID.
User Agent
A device and software that is the recipient of push messages.
WebPush
IETF specification regarding Push Messages, the protocol for their delivery (HTTP 2.0) to User Agents, and how the Application Server interacts with the Push Service. See the complete Webpush Specification.

Alternate Implementation

Other groups have implemented Push Services implementing WebPush.

Community Contributions

Matthias Wessendorf has provided a quick hack showing how to call the server by hand.