Documentation
¶
Overview ¶
Package pubsub provides simple pub/sub functionality for people who register on a given topic, functions will be called back in a thread-safe manner
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Publish ¶
func Publish(key string, x interface{})
Publish a message with a payload.
Example ¶
ExamplePubSub ... simple pub sub examples
package main
import (
"log"
"time"
"github.com/DanielRenne/GoCore/core"
"github.com/DanielRenne/GoCore/core/pubsub"
)
// TestPublish is a test struct for pubsub
type TestPublish struct {
DeviceID string `json:"deviceId"`
Value bool `json:"value"`
}
// ExamplePubSub ... simple pub sub examples
func main() {
// Place me anywhere in your code
pubsub.Subscribe("test", func(topic string, data interface{}) {
// Do something with the data
core.Debug.Dump("Dumping the data emojis wont work on windows because windows cmd line sucks, but on linux or mac it will kiss you 💋", topic, data)
core.Debug.Dump("oh cool byte array dumps when non printables exist", "\x00 hello nulls!")
})
log.Print("Sleeping for 5 seconds")
time.Sleep(time.Second * 5)
core.Debug.Dump("Calling Publish")
pubsub.Publish("test", TestPublish{DeviceID: "123", Value: true})
log.Print("Sleeping for 2 seconds to allow the pubsub to run before it exits the program")
time.Sleep(time.Second * 2)
}
Output: 2022/10/03 21:25:30 Sleeping for 5 seconds !!!!!!!!!!!!! DEBUG 2022-10-03 21:25:35.506013!!!!!!!!!!!!! #### string [len:15]#### Calling Publish !!!!!!!!!!!!! ENDDEBUG 2022-10-03 21:25:35.506013!!!!!!!!!!!!! 2022/10/03 21:25:35 Sleeping for 2 seconds to allow the pubsub to run before it exits the program
func Subscribe ¶
func Subscribe(key string, callback SubscriptionCallback)
Subscribe to a publisher message key and function to call
Types ¶
type SubscriptionCallback ¶
type SubscriptionCallback func(key string, x interface{})
SubscriptionCallback is the callback function for published messgages for use in your interfaces
Click to show internal directories.
Click to hide internal directories.