diff --git a/client.go b/client.go index 5ac44084380dcda2fa3b96b6e64e36469ab4b412..c431c9ad18bec48e99376959780b6759978ec3a2 100644 --- a/client.go +++ b/client.go @@ -467,7 +467,7 @@ func (c *Client) send(ctx context.Context, op *requestOp, msg any) error { func (c *Client) write(ctx context.Context, msg any, retry bool) error { if c.writeConn == nil { // The previous write failed. Try to establish a new connection. - time.Sleep(500 * time.Millisecond) + // time.Sleep(500 * time.Millisecond) err := c.reconnect(ctx) if err != nil { return err diff --git a/websocket.go b/websocket.go index b3b21b83b881f97de98a316caf7af37feec01dc5..67a479fd003d2f17d3f54b90a27606a32cef6c59 100644 --- a/websocket.go +++ b/websocket.go @@ -49,7 +49,7 @@ func (s *Server) WebsocketHandler(allowedOrigins []string) http.Handler { conn, err := websocket.Accept(w, r, &websocket.AcceptOptions{ OriginPatterns: allowedOrigins, CompressionMode: websocket.CompressionContextTakeover, - CompressionThreshold: 4096, + CompressionThreshold: 512, }) if err != nil { log.Debug().Err(err).Msg("WebSocket upgrade failed") @@ -80,8 +80,8 @@ func DialWebsocketWithDialer(ctx context.Context, endpoint, origin string, opts return nil, err } opts.HTTPHeader = header - return newClient(ctx, func(cctx context.Context) (ServerCodec, error) { - conn, resp, err := websocket.Dial(cctx, endpoint, opts) + return newClient(ctx, func(ctx context.Context) (ServerCodec, error) { + conn, resp, err := websocket.Dial(ctx, endpoint, opts) if err != nil { hErr := wsHandshakeError{err: err} if resp != nil { @@ -106,7 +106,7 @@ func DialWebsocket(ctx context.Context, endpoint, origin string) (*Client, error } dialer := &websocket.DialOptions{ CompressionMode: websocket.CompressionContextTakeover, - CompressionThreshold: 4096, + CompressionThreshold: 512, HTTPHeader: header, } return DialWebsocketWithDialer(ctx, endpoint, origin, dialer) @@ -160,10 +160,10 @@ func heartbeat(ctx context.Context, c *websocket.Conn, d time.Duration) { func newWebsocketCodec(ctx context.Context, c *websocket.Conn, host string, req http.Header) ServerCodec { c.SetReadLimit(wsMessageSizeLimit) jsonWriter := func(v any) error { - return wsjson.Write(context.Background(), c, v) + return wsjson.Write(ctx, c, v) } jsonReader := func(v any) error { - return wsjson.Read(context.Background(), c, v) + return wsjson.Read(ctx, c, v) } conn := websocket.NetConn(ctx, c, websocket.MessageText) wc := &websocketCodec{ diff --git a/wsjson/wsjson.go b/wsjson/wsjson.go index 07c72fdf087d4db7d4b71f93b46fd7b18dbb8f6e..c8d91fe3939fbbb0c7b14a2a50a0d137c03913d2 100644 --- a/wsjson/wsjson.go +++ b/wsjson/wsjson.go @@ -18,7 +18,7 @@ var jzon = jsoniter.Config{ DisallowUnknownFields: false, TagKey: "", OnlyTaggedField: false, - ValidateJsonRawMessage: false, + ValidateJsonRawMessage: true, ObjectFieldMustBeSimpleString: false, CaseSensitive: false, }.Froze()