From 4094d54fd1dab037bbadb70299be7fd46978412c Mon Sep 17 00:00:00 2001 From: Valery Piashchynski Date: Tue, 26 Jan 2021 18:00:03 +0300 Subject: [PATCH] Move close channel routines after connection closed --- access_validator.go | 3 ++- access_validator_test.go | 3 ++- cmd/rr-ws/ws/debug.go | 3 ++- config_test.go | 3 ++- conn_context.go | 3 ++- conn_context_test.go | 3 ++- conn_pool.go | 10 ++++++---- go.mod | 12 ++++++------ service.go | 9 +++++---- service_test.go | 15 ++++++++------- 10 files changed, 37 insertions(+), 27 deletions(-) diff --git a/access_validator.go b/access_validator.go index 39f6a3d..56ff771 100644 --- a/access_validator.go +++ b/access_validator.go @@ -2,10 +2,11 @@ package ws import ( "bytes" - "github.com/spiral/roadrunner/service/http/attributes" "io" "net/http" "strings" + + "github.com/spiral/roadrunner/service/http/attributes" ) type accessValidator struct { diff --git a/access_validator_test.go b/access_validator_test.go index 1286747..f1f6730 100644 --- a/access_validator_test.go +++ b/access_validator_test.go @@ -1,8 +1,9 @@ package ws import ( - "github.com/stretchr/testify/assert" "testing" + + "github.com/stretchr/testify/assert" ) func TestResponseWrapper_Body(t *testing.T) { diff --git a/cmd/rr-ws/ws/debug.go b/cmd/rr-ws/ws/debug.go index ea0d44a..1cda111 100644 --- a/cmd/rr-ws/ws/debug.go +++ b/cmd/rr-ws/ws/debug.go @@ -1,13 +1,14 @@ package ws import ( + "strings" + "github.com/gorilla/websocket" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ws "github.com/spiral/broadcast-ws" rr "github.com/spiral/roadrunner/cmd/rr/cmd" "github.com/spiral/roadrunner/cmd/util" - "strings" ) func init() { diff --git a/config_test.go b/config_test.go index d90b7db..20440bd 100644 --- a/config_test.go +++ b/config_test.go @@ -2,9 +2,10 @@ package ws import ( "encoding/json" + "testing" + "github.com/spiral/roadrunner/service" "github.com/stretchr/testify/assert" - "testing" ) type mockCfg struct{ cfg string } diff --git a/conn_context.go b/conn_context.go index f684e5c..f8b532e 100644 --- a/conn_context.go +++ b/conn_context.go @@ -2,8 +2,9 @@ package ws import ( "encoding/json" + "github.com/gorilla/websocket" - "github.com/spiral/broadcast" + "github.com/spiral/broadcast/v2" ) // ConnContext carries information about websocket connection and it's topics. diff --git a/conn_context_test.go b/conn_context_test.go index 9ae3231..6753b7c 100644 --- a/conn_context_test.go +++ b/conn_context_test.go @@ -1,8 +1,9 @@ package ws import ( - "github.com/stretchr/testify/assert" "testing" + + "github.com/stretchr/testify/assert" ) func TestConnContext_ManageTopics(t *testing.T) { diff --git a/conn_pool.go b/conn_pool.go index 1a17d12..fcfbb0d 100644 --- a/conn_pool.go +++ b/conn_pool.go @@ -2,9 +2,10 @@ package ws import ( "errors" - "github.com/gorilla/websocket" - "github.com/spiral/broadcast" "sync" + + "github.com/gorilla/websocket" + "github.com/spiral/broadcast/v2" ) // manages a set of websocket connections @@ -116,10 +117,11 @@ func (cp *connPool) close() { cp.errHandler(err, conn) } - delete(cp.conns, conn) - close(ctx.upstream) if err := conn.Close(); err != nil { cp.errHandler(err, conn) } + + delete(cp.conns, conn) + close(ctx.upstream) } } diff --git a/go.mod b/go.mod index 2f446c9..f58d569 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ module github.com/spiral/broadcast-ws -go 1.12 +go 1.15 require ( github.com/gorilla/websocket v1.4.1 - github.com/prometheus/client_golang v1.2.1 // indirect + github.com/prometheus/client_golang v1.5.0 github.com/sirupsen/logrus v1.4.2 - github.com/spf13/cobra v0.0.5 // indirect - github.com/spiral/broadcast v0.0.0-20191206140608-766959683e74 - github.com/spiral/roadrunner v1.5.2 - github.com/stretchr/testify v1.3.0 + github.com/spf13/cobra v0.0.6 + github.com/spiral/broadcast/v2 v2.0.5-beta1 + github.com/spiral/roadrunner v1.6.4 + github.com/stretchr/testify v1.5.1 ) diff --git a/service.go b/service.go index 6efa364..1534c95 100644 --- a/service.go +++ b/service.go @@ -2,14 +2,15 @@ package ws import ( "encoding/json" + "net/http" + "sync" + "sync/atomic" + "github.com/gorilla/websocket" - "github.com/spiral/broadcast" + "github.com/spiral/broadcast/v2" "github.com/spiral/roadrunner/service/env" rhttp "github.com/spiral/roadrunner/service/http" "github.com/spiral/roadrunner/service/rpc" - "net/http" - "sync" - "sync/atomic" ) // ID defines service id. diff --git a/service_test.go b/service_test.go index a9b442f..bc956a1 100644 --- a/service_test.go +++ b/service_test.go @@ -2,21 +2,22 @@ package ws import ( "encoding/json" + "io/ioutil" + "net/http" + "net/url" + "strings" + "testing" + "time" + "github.com/gorilla/websocket" "github.com/sirupsen/logrus" "github.com/sirupsen/logrus/hooks/test" - "github.com/spiral/broadcast" + "github.com/spiral/broadcast/v2" "github.com/spiral/roadrunner/service" "github.com/spiral/roadrunner/service/env" rrhttp "github.com/spiral/roadrunner/service/http" "github.com/spiral/roadrunner/service/rpc" "github.com/stretchr/testify/assert" - "io/ioutil" - "net/http" - "net/url" - "strings" - "testing" - "time" ) type testCfg struct {