Quickstart
Connection
package main
import (
"log"
"log/slog"
"time"
"github.com/fatih/color"
"github.com/gorilla/websocket"
)
type Payload struct {
Event string `json:"event"`
Content []string `json:"content"`
}
const (
url = "wss://api.monitor.ws/connect"
)
func main() {
/* Connecting to the monitorws server */
conn, _, err := websocket.DefaultDialer.Dial(url, nil)
if err != nil {
log.Fatalf("connecting to monitorws: %v", err)
}
defer conn.Close()
/* Sending event payload */
if err := conn.WriteJSON(Payload{
/* Refer to docs.monitor.ws/websocket */
Event: "<YOUR_EVENT>",
Content: []string{
"", /* This field can be empty if you don't want to set any filters; however, it does not work with all events. */
},
}); err != nil {
log.Fatalf("writing event to monitorws: %v", err)
}
/*
Send a ping message every 8 minutes to keep the connection alive
*/
go func() {
for {
time.Sleep(8 * time.Minute)
if err := conn.WriteControl(websocket.PingMessage, []byte("ping"), time.Now().Add(10*time.Second)); err != nil {
slog.Error("sending ping to monitorws", "err", err)
continue
}
color.Magenta("[ %s ] > Ping sent to monitorws", time.Now().Format("15:04:05"))
}
}()
/*
Infinite loop to listen for events from the server.
*/
for {
/* Reading the message received from the server */
_, message, err := conn.ReadMessage()
if err != nil {
slog.Error("reading event from monitorws", "err", err)
continue
}
color.Cyan("[ %s ] > %s", time.Now().Format("15:04:05"), string(message))
}
}Dev Support
Last updated