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"
    )

      Push actions

      View Source
      const MaxPayloadLength = 128

        Maximum length of push payload in multibyte characters.

        Variables

        This section is empty.

        Functions

        func ChannelSub

        func ChannelSub(msg *ChannelReq)

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

          func Init

          func Init(jsconfig 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

                  type ChannelReq struct {
                  	// Uid is the id of the user making request
                  	Uid t.Uid `json:"-"`
                  	// Channel to subscribe to or unsubscribe from.
                  	Channel string `json:"channel"`
                  	// Unsub is set to true to unsubscribe devices, otherwise subscribe them.
                  	Unsub bool `json:"unsub"`
                  }

                    ChannelReq is a request to subscribe/unsubscribe device IDs to channel (FCM topic).

                    type Handler

                    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"`
                      
                      	// Access mode when notifying of new subscriptions.
                      	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

                          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.

                            Source Files

                            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.