From f91e24cc02b21383ab66406c9835d977cf62722d Mon Sep 17 00:00:00 2001 From: Roger Ferdinan Date: Thu, 25 Sep 2025 14:51:44 +0700 Subject: [PATCH] feat: adding rawQuery to safeWebsocketClient --- v1/client/client.go | 27 +++++++++++++++++++++++---- v1/server/server.go | 3 --- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/v1/client/client.go b/v1/client/client.go index 97f13c1..435f1bd 100644 --- a/v1/client/client.go +++ b/v1/client/client.go @@ -5,6 +5,7 @@ import ( "fmt" "log" "net/url" + "strings" "time" "git.neurocipta.com/rogerferdinan/safe-web-socket/internal" @@ -18,7 +19,8 @@ const ( type SafeWebsocketClientBuilder struct { baseHost *string `nil_checker:"required"` basePort *uint16 `nil_checker:"required"` - path *string `nil_checkeer:"required"` + path *string + rawQuery *string useTLS *bool } @@ -46,6 +48,11 @@ func (b *SafeWebsocketClientBuilder) Path(path string) *SafeWebsocketClientBuild return b } +func (b *SafeWebsocketClientBuilder) RawQuery(rawQuery string) *SafeWebsocketClientBuilder { + b.rawQuery = &rawQuery + return b +} + func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) { if err := internal.NilChecker(b); err != nil { return nil, err @@ -62,7 +69,8 @@ func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) { baseHost: *b.baseHost, basePort: *b.basePort, useTLS: useTLS, - path: *b.path, + path: b.path, + rawQuery: b.rawQuery, ctx: ctx, cancel: cancel, dataChannel: make(chan []byte, 1), @@ -83,7 +91,8 @@ type SafeWebsocketClient struct { baseHost string basePort uint16 useTLS bool - path string + path *string + rawQuery *string dataChannel chan []byte mu *internal.CustomRwMutex conn *websocket.Conn @@ -103,8 +112,18 @@ func (wsClient *SafeWebsocketClient) connect() error { newURL := url.URL{ Scheme: scheme, Host: fmt.Sprintf("%s:%d", wsClient.baseHost, wsClient.basePort), - Path: wsClient.path, } + + if wsClient.path != nil && strings.TrimSpace(*wsClient.path) != "" { + newURL.Path = *wsClient.path + } + + if wsClient.rawQuery != nil && strings.TrimSpace(*wsClient.rawQuery) != "" { + newURL.RawQuery = *wsClient.rawQuery + } + + fmt.Println(newURL.String()) + conn, _, err := websocket.DefaultDialer.Dial(newURL.String(), nil) if err != nil { return fmt.Errorf("failed to connect to %s: %w", wsClient.baseHost, err) diff --git a/v1/server/server.go b/v1/server/server.go index fd39d40..fa2b77f 100644 --- a/v1/server/server.go +++ b/v1/server/server.go @@ -18,9 +18,6 @@ type SafeWebsocketServerBuilder struct { } func NewSafeWebsocketServerBuilder() *SafeWebsocketServerBuilder { - h := internal.NewHub() - h.Run() - return &SafeWebsocketServerBuilder{ upgrader: &websocket.Upgrader{ ReadBufferSize: 1024,