Documentation
¶
Overview ¶
Package push contains interfaces to be implemented by push notification plugins.
Index ¶
Constants ¶
const ( // New message. ActMsg = "msg" // New subscription. ActSub = "sub" // Messages read: clear unread count. ActRead = "read" )
Push actions
const MaxPayloadLength = 128
MaxPayloadLength is the maximum length of push payload in multibyte characters.
Variables ¶
This section is empty.
Functions ¶
func ChannelSub ¶ added in v0.20.1
func ChannelSub(msg *ChannelReq)
ChannelSub handles a channel (FCM topic) subscription/unsubscription request.
Types ¶
type ChannelReq ¶ added in v0.20.1
type ChannelReq struct {
// Uid is the ID of the user making request.
Uid t.Uid
// DeviceID is the device-provided token in case a single device is being subscribed to all channels.
DeviceID string
// Channel to subscribe to or unsubscribe from.
Channel string
// Unsub is set to true to unsubscribe devices, otherwise subscribe them.
Unsub bool
}
ChannelReq is a request to subscribe/unsubscribe device ID(s) to channel(s) (FCM topic). - If DeviceID is provided, it's subscribed/unsubscribed to all user's channels. - If Channel is provided, then all user's devices are subscribed/unsubscribed from the channel.
type Handler ¶ added in v0.14.2
type Handler interface {
// Init initializes the handler.
Init(jsonconf string) error
// IsReady сhecks if the handler is initialized.
IsReady() bool
// Push returns a channel that the server will use to send messages to.
// The message will be dropped if the channel blocks.
Push() chan<- *Receipt
// Subscribe/unsubscribe device from FCM topic (channel).
Channel() chan<- *ChannelReq
// Stop terminates the handler's worker and stops sending pushes.
Stop()
}
Handler is an interface which must be implemented by handlers.
type Payload ¶
type Payload struct {
// Action type of the push: new message (msg), new subscription (sub), etc.
What string `json:"what"`
// If this is a silent push: perform action but do not show a notification to the user.
Silent bool `json:"silent"`
// Topic which was affected by the action.
Topic string `json:"topic"`
// Timestamp of the action.
Timestamp time.Time `json:"ts"`
// Message sender 'usrXXX'
From string `json:"from"`
// Sequential ID of the message.
SeqId int `json:"seq"`
// MIME-Type of the message content, text/x-drafty or text/plain
ContentType string `json:"mime"`
// Actual Data.Content of the message, if requested
Content interface{} `json:"content,omitempty"`
// New access mode when notifying of a subscription change.
// ModeNone for both means the subscription is removed.
ModeWant t.AccessMode `json:"want,omitempty"`
ModeGiven t.AccessMode `json:"given,omitempty"`
}
Payload is content of the push.
type Receipt ¶
type Receipt struct {
// List of individual recipients, including those who did not receive the message.
To map[t.Uid]Recipient `json:"to"`
// Push topic for group notifications.
Channel string `json:"channel"`
// Actual content to be delivered to the client.
Payload Payload `json:"payload"`
}
Receipt is the push payload with a list of recipients.
type Recipient ¶ added in v0.14.2
type Recipient struct {
// Count of user's connections that were live when the packet was dispatched from the server
Delivered int `json:"delivered"`
// List of user's devices that the packet was delivered to (if known). Len(Devices) >= Delivered
Devices []string `json:"devices,omitempty"`
// Unread count to include in the push
Unread int `json:"unread"`
}
Recipient is a user targeted by the push.
Directories
¶
| Path | Synopsis |
|---|---|
|
Package fcm implements push notification plugin for Google FCM backend.
|
Package fcm implements push notification plugin for Google FCM backend. |
|
Package stdout is a sample implementation of a push plugin.
|
Package stdout is a sample implementation of a push plugin. |
|
Package tnpg implements push notification plugin for Tinode Push Gateway.
|
Package tnpg implements push notification plugin for Tinode Push Gateway. |