push

package
v0.21.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2023 License: GPL-3.0 Imports: 4 Imported by: 21

Documentation

Overview

Package push contains interfaces to be implemented by push notification plugins.

Index

Constants

View Source
const (
	// New message.
	ActMsg = "msg"
	// New subscription.
	ActSub = "sub"
	// Messages read: clear unread count.
	ActRead = "read"
)

Push actions

View Source
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.16.8

func ChannelSub(msg *ChannelReq)

ChannelSub handles a channel (FCM topic) subscription/unsubscription request.

func Init

func Init(jsconfig json.RawMessage) ([]string, error)

Init initializes registered handlers.

func Push

func Push(msg *Receipt)

Push a single message to devices.

func Register

func Register(name string, hnd Handler)

Register a push handler

func Stop

func Stop()

Stop all pushes

Types

type ChannelReq added in v0.16.8

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 json.RawMessage) (bool, 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"`
	// State of the video call (available in video call messages only).
	Webrtc string `json:"webrtc,omitempty"`
	// If call is audio-only (available only if Webrtc is present).
	AudioOnly bool `json:"aonly,omitempty"`
	// Seq id the message is supposed to replace.
	Replace string `json:"replace,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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL