Compare commits

...

1 Commits

Author SHA1 Message Date
f91e24cc02 feat: adding rawQuery to safeWebsocketClient 2025-09-25 14:51:44 +07:00
2 changed files with 23 additions and 7 deletions

View File

@@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"log" "log"
"net/url" "net/url"
"strings"
"time" "time"
"git.neurocipta.com/rogerferdinan/safe-web-socket/internal" "git.neurocipta.com/rogerferdinan/safe-web-socket/internal"
@@ -18,7 +19,8 @@ const (
type SafeWebsocketClientBuilder struct { type SafeWebsocketClientBuilder struct {
baseHost *string `nil_checker:"required"` baseHost *string `nil_checker:"required"`
basePort *uint16 `nil_checker:"required"` basePort *uint16 `nil_checker:"required"`
path *string `nil_checkeer:"required"` path *string
rawQuery *string
useTLS *bool useTLS *bool
} }
@@ -46,6 +48,11 @@ func (b *SafeWebsocketClientBuilder) Path(path string) *SafeWebsocketClientBuild
return b return b
} }
func (b *SafeWebsocketClientBuilder) RawQuery(rawQuery string) *SafeWebsocketClientBuilder {
b.rawQuery = &rawQuery
return b
}
func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) { func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) {
if err := internal.NilChecker(b); err != nil { if err := internal.NilChecker(b); err != nil {
return nil, err return nil, err
@@ -62,7 +69,8 @@ func (b *SafeWebsocketClientBuilder) Build() (*SafeWebsocketClient, error) {
baseHost: *b.baseHost, baseHost: *b.baseHost,
basePort: *b.basePort, basePort: *b.basePort,
useTLS: useTLS, useTLS: useTLS,
path: *b.path, path: b.path,
rawQuery: b.rawQuery,
ctx: ctx, ctx: ctx,
cancel: cancel, cancel: cancel,
dataChannel: make(chan []byte, 1), dataChannel: make(chan []byte, 1),
@@ -83,7 +91,8 @@ type SafeWebsocketClient struct {
baseHost string baseHost string
basePort uint16 basePort uint16
useTLS bool useTLS bool
path string path *string
rawQuery *string
dataChannel chan []byte dataChannel chan []byte
mu *internal.CustomRwMutex mu *internal.CustomRwMutex
conn *websocket.Conn conn *websocket.Conn
@@ -103,8 +112,18 @@ func (wsClient *SafeWebsocketClient) connect() error {
newURL := url.URL{ newURL := url.URL{
Scheme: scheme, Scheme: scheme,
Host: fmt.Sprintf("%s:%d", wsClient.baseHost, wsClient.basePort), 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) conn, _, err := websocket.DefaultDialer.Dial(newURL.String(), nil)
if err != nil { if err != nil {
return fmt.Errorf("failed to connect to %s: %w", wsClient.baseHost, err) return fmt.Errorf("failed to connect to %s: %w", wsClient.baseHost, err)

View File

@@ -18,9 +18,6 @@ type SafeWebsocketServerBuilder struct {
} }
func NewSafeWebsocketServerBuilder() *SafeWebsocketServerBuilder { func NewSafeWebsocketServerBuilder() *SafeWebsocketServerBuilder {
h := internal.NewHub()
h.Run()
return &SafeWebsocketServerBuilder{ return &SafeWebsocketServerBuilder{
upgrader: &websocket.Upgrader{ upgrader: &websocket.Upgrader{
ReadBufferSize: 1024, ReadBufferSize: 1024,