From c1ebde75fd1955f9c261e5c4fd553c98aae53696 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 17 Mar 2024 12:15:55 +0100 Subject: [PATCH] wip: Start subscriptions --- websockets/client.go | 18 ++++++++++++++++-- websockets/main.go | 5 ++--- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/websockets/client.go b/websockets/client.go index 732b5378..875c85a4 100644 --- a/websockets/client.go +++ b/websockets/client.go @@ -3,8 +3,9 @@ package main import "errors" type Client struct { - id string - messages chan []byte + id string + messages chan []byte + subscriptions []string } type Message struct { @@ -18,11 +19,24 @@ type Response struct { Error string `json:"error,omitempty"` } +func NewClient() *Client{ + return &Client{ + messages: make(chan []byte, MAX_MESSAGE_QUEUE), + subscriptions: make([]string, 0), + } +} + func (c *Client) HandleMessage(message Message) (interface{}, error) { switch message.Action { case "ping": return "pong", nil + case "subscribe": + c.subscriptions = append(c.subscriptions, message.Value.(string)) + return nil, nil default: return nil, errors.New("invalid action") } } + +func (c *Client) ListenChannels() { +} diff --git a/websockets/main.go b/websockets/main.go index e8c89bb5..848f0659 100644 --- a/websockets/main.go +++ b/websockets/main.go @@ -23,12 +23,11 @@ func main() { } defer c.CloseNow() - client := &Client{ - messages: make(chan []byte, MAX_MESSAGE_QUEUE), - } + client := NewClient() server.RegisterClient(client) defer server.DeleteClient(client) + go client.ListenChannels() for { var message Message err := wsjson.Read(r.Context(), c, &message)