diff --git a/contrib/codecs/dialer.go b/contrib/codecs/dialer.go index 89cfc2da1280e61b4aafcfcb8058e8446a5fbee6..4d89fe66c2372a37aaff1140d02a590c262fa9dd 100644 --- a/contrib/codecs/dialer.go +++ b/contrib/codecs/dialer.go @@ -7,6 +7,7 @@ import ( "gfx.cafe/open/jrpc/contrib/codecs/http" "gfx.cafe/open/jrpc/contrib/codecs/rdwr" + "gfx.cafe/open/jrpc/contrib/codecs/redis" "gfx.cafe/open/jrpc/contrib/codecs/websocket" "gfx.cafe/open/jrpc/pkg/codec" ) @@ -21,6 +22,12 @@ func DialContext(ctx context.Context, u string) (codec.Conn, error) { return http.Dial(ctx, nil, u) case "ws", "wss": return websocket.DialWebsocket(ctx, u, "") + case "redis": + domain := pu.Query().Get("domain") + if domain == "" { + domain = "jrpc" + } + return redis.Dial(pu.Host, domain), nil case "tcp": tcpAddr, err := net.ResolveTCPAddr("tcp", u) if err != nil { diff --git a/contrib/codecs/redis/client.go b/contrib/codecs/redis/client.go index c73ff35699bfcf8cb1ca69e6327ea202464398c3..af4b12253d61b96f0fa0f3d8f6d3c084c8ef2d1f 100644 --- a/contrib/codecs/redis/client.go +++ b/contrib/codecs/redis/client.go @@ -30,6 +30,12 @@ type Client struct { handlerPeer codec.PeerInfo } +func Dial(url string, domain string) *Client { + return NewClient(redis.NewUniversalClient(&redis.UniversalOptions{ + Addrs: []string{url}, + }), domain) +} + func NewClient(c redis.UniversalClient, domain string) *Client { cl := &Client{ c: c,