From c626e72951b3bfa047c21b778a970217ca31f9f8 Mon Sep 17 00:00:00 2001 From: a <a@tuxpa.in> Date: Tue, 29 Aug 2023 18:57:06 -0500 Subject: [PATCH] okg --- contrib/extension/subscription/client.go | 4 ++-- contrib/extension/subscription/engine.go | 6 +++--- contrib/extension/subscription/subscription.go | 18 +++++++++++++----- 3 files changed, 18 insertions(+), 10 deletions(-) diff --git a/contrib/extension/subscription/client.go b/contrib/extension/subscription/client.go index d845d9b..fa89a1a 100644 --- a/contrib/extension/subscription/client.go +++ b/contrib/extension/subscription/client.go @@ -68,7 +68,7 @@ func (c *WrapClient) Subscribe(ctx context.Context, namespace string, channel an // send the actual message to initialize the subscription var result string - err := c.conn.Do(ctx, &result, namespace+subscribeMethodSuffix, args) + err := c.conn.Do(ctx, &result, namespace+serviceMethodSeparator+subscribeMethodSuffix, args) if err != nil { return nil, err } @@ -166,7 +166,7 @@ func (c *clientSub) Err() <-chan error { func (c *clientSub) Unsubscribe() error { // TODO: dont use context background here... var result string - err := c.conn.Do(context.Background(), &result, c.namespace+unsubscribeMethodSuffix, nil) + err := c.conn.Do(context.Background(), &result, c.namespace+serviceMethodSeparator+unsubscribeMethodSuffix, nil) if err != nil { return err } diff --git a/contrib/extension/subscription/engine.go b/contrib/extension/subscription/engine.go index 7e3c820..50342b6 100644 --- a/contrib/extension/subscription/engine.go +++ b/contrib/extension/subscription/engine.go @@ -41,11 +41,11 @@ func (e *Engine) Middleware() func(codec.Handler) codec.Handler { return codec.HandlerFunc(func(w codec.ResponseWriter, r *codec.Request) { // its a subscription, so install a notification handler switch { - case strings.HasSuffix(r.Method, subscribeMethodSuffix): + case strings.HasSuffix(r.Method, serviceMethodSeparator+subscribeMethodSuffix): // create the notifier to inject into the context n := &Notifier{ h: w, - namespace: strings.TrimSuffix(r.Method, subscribeMethodSuffix), + namespace: strings.TrimSuffix(r.Method, serviceMethodSeparator+subscribeMethodSuffix), id: e.idgen(), err: make(chan error, 1), } @@ -59,7 +59,7 @@ func (e *Engine) Middleware() func(codec.Handler) codec.Handler { // then inject the notifier r = r.WithContext(context.WithValue(r.Context(), notifierKey{}, n)) h.ServeRPC(w, r) - case strings.HasSuffix(r.Method, unsubscribeMethodSuffix): + case strings.HasSuffix(r.Method, serviceMethodSeparator+unsubscribeMethodSuffix): // read the subscription id to close var subid SubID err := r.ParamArray(subid) diff --git a/contrib/extension/subscription/subscription.go b/contrib/extension/subscription/subscription.go index 4b166de..85a9d3a 100644 --- a/contrib/extension/subscription/subscription.go +++ b/contrib/extension/subscription/subscription.go @@ -15,11 +15,16 @@ import ( json "github.com/goccy/go-json" ) +var serviceMethodSeparator = "/" + +func SetServiceMethodSeparator(val string) { + serviceMethodSeparator = val +} + const ( - serviceMethodSeparator = "/" - subscribeMethodSuffix = serviceMethodSeparator + "subscribe" - notificationMethodSuffix = serviceMethodSeparator + "subscription" - unsubscribeMethodSuffix = serviceMethodSeparator + "unsubscribe" + subscribeMethodSuffix = "subscribe" + notificationMethodSuffix = "subscription" + unsubscribeMethodSuffix = "unsubscribe" maxClientSubscriptionBuffer = 12800 ) @@ -105,5 +110,8 @@ func (n *Notifier) Err() <-chan error { func (n *Notifier) send(data json.RawMessage) error { params, _ := json.Marshal(&subscriptionResult{ID: string(n.id), Result: data}) - return n.h.Notify(n.namespace+notificationMethodSuffix, json.RawMessage(params)) + return n.h.Notify( + n.namespace+ + serviceMethodSeparator+ + notificationMethodSuffix, json.RawMessage(params)) } -- GitLab