Official Go SDK for wSocket — Realtime Pub/Sub over WebSockets.
go get github.com/wsocket-io/sdk-gopackage main
import (
"fmt"
wsocket "github.com/wsocket-io/sdk-go"
)
func main() {
client := wsocket.NewClient("wss://node00.wsocket.online", "your-api-key")
err := client.Connect()
if err != nil {
panic(err)
}
defer client.Disconnect()
ch := client.Channel("chat:general")
ch.Subscribe(func(data map[string]any, meta wsocket.MessageMeta) {
fmt.Printf("[%s] %v\n", meta.Channel, data)
})
ch.Publish(map[string]any{"text": "Hello from Go!"})
select {} // block forever
}- Pub/Sub — Subscribe and publish to channels in real-time
- Presence — Track who is online in a channel
- History — Retrieve past messages
- Connection Recovery — Automatic reconnection with message replay
- Thread-safe — Safe for concurrent use
ch := client.Channel("chat:general")
ch.Presence().OnEnter(func(m wsocket.PresenceMember) {
fmt.Println("joined:", m.ClientID)
})
ch.Presence().OnLeave(func(m wsocket.PresenceMember) {
fmt.Println("left:", m.ClientID)
})
ch.Presence().Enter(map[string]any{"name": "Alice"})
members := ch.Presence().Get()ch.OnHistory(func(result wsocket.HistoryResult) {
for _, msg := range result.Messages {
fmt.Printf("[%d] %v\n", msg.Timestamp, msg.Data)
}
})
ch.History(wsocket.HistoryOptions{Limit: 50})- Go >= 1.21
github.com/gorilla/websocket
go test ./...MIT