mirror of
https://github.com/grafana/grafana.git
synced 2025-09-22 22:23:39 +08:00
Live: Migrate to centrifuge-js v3 (new API and client protocol) (#51977)
This commit is contained in:
19
go.mod
19
go.mod
@ -13,6 +13,9 @@ replace k8s.io/client-go => k8s.io/client-go v0.22.1
|
|||||||
|
|
||||||
replace github.com/russellhaering/goxmldsig@v1.1.0 => github.com/russellhaering/goxmldsig v1.1.1
|
replace github.com/russellhaering/goxmldsig@v1.1.0 => github.com/russellhaering/goxmldsig v1.1.1
|
||||||
|
|
||||||
|
// Avoid using v2.0.0+incompatible Redigo used by dependencies as the latest maintained branch of Redigo is v1.
|
||||||
|
replace github.com/gomodule/redigo => github.com/gomodule/redigo v1.8.9
|
||||||
|
|
||||||
require (
|
require (
|
||||||
cloud.google.com/go/storage v1.21.0
|
cloud.google.com/go/storage v1.21.0
|
||||||
cuelang.org/go v0.4.3
|
cuelang.org/go v0.4.3
|
||||||
@ -25,7 +28,7 @@ require (
|
|||||||
github.com/beevik/etree v1.1.0
|
github.com/beevik/etree v1.1.0
|
||||||
github.com/benbjohnson/clock v1.1.0
|
github.com/benbjohnson/clock v1.1.0
|
||||||
github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b
|
github.com/bradfitz/gomemcache v0.0.0-20190913173617-a41fca850d0b
|
||||||
github.com/centrifugal/centrifuge v0.19.0
|
github.com/centrifugal/centrifuge v0.25.0
|
||||||
github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d
|
github.com/cortexproject/cortex v1.10.1-0.20211014125347-85c378182d0d
|
||||||
github.com/crewjam/saml v0.4.8
|
github.com/crewjam/saml v0.4.8
|
||||||
github.com/davecgh/go-spew v1.1.1
|
github.com/davecgh/go-spew v1.1.1
|
||||||
@ -42,14 +45,14 @@ require (
|
|||||||
github.com/go-sql-driver/mysql v1.6.0
|
github.com/go-sql-driver/mysql v1.6.0
|
||||||
github.com/go-stack/stack v1.8.1
|
github.com/go-stack/stack v1.8.1
|
||||||
github.com/gobwas/glob v0.2.3
|
github.com/gobwas/glob v0.2.3
|
||||||
github.com/gofrs/uuid v4.2.0+incompatible
|
github.com/gofrs/uuid v4.2.0+incompatible // indirect
|
||||||
github.com/gogo/protobuf v1.3.2
|
github.com/gogo/protobuf v1.3.2
|
||||||
github.com/golang/mock v1.6.0
|
github.com/golang/mock v1.6.0
|
||||||
github.com/golang/snappy v0.0.4
|
github.com/golang/snappy v0.0.4
|
||||||
github.com/google/go-cmp v0.5.8
|
github.com/google/go-cmp v0.5.8
|
||||||
github.com/google/uuid v1.3.0
|
github.com/google/uuid v1.3.0
|
||||||
github.com/google/wire v0.5.0
|
github.com/google/wire v0.5.0
|
||||||
github.com/gorilla/websocket v1.4.2
|
github.com/gorilla/websocket v1.5.0
|
||||||
github.com/gosimple/slug v1.12.0
|
github.com/gosimple/slug v1.12.0
|
||||||
github.com/grafana/cuetsy v0.0.4-0.20220714174355-ebd987fdab27
|
github.com/grafana/cuetsy v0.0.4-0.20220714174355-ebd987fdab27
|
||||||
github.com/grafana/grafana-aws-sdk v0.10.8
|
github.com/grafana/grafana-aws-sdk v0.10.8
|
||||||
@ -132,7 +135,7 @@ require (
|
|||||||
github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
|
github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect
|
||||||
github.com/Azure/go-autorest/logger v0.2.1 // indirect
|
github.com/Azure/go-autorest/logger v0.2.1 // indirect
|
||||||
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
|
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
|
||||||
github.com/FZambia/eagle v0.0.1 // indirect
|
github.com/FZambia/eagle v0.0.2 // indirect
|
||||||
github.com/FZambia/sentinel v1.1.0 // indirect
|
github.com/FZambia/sentinel v1.1.0 // indirect
|
||||||
github.com/PuerkitoBio/purell v1.1.1 // indirect
|
github.com/PuerkitoBio/purell v1.1.1 // indirect
|
||||||
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
|
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
|
||||||
@ -142,7 +145,7 @@ require (
|
|||||||
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
|
github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d // indirect
|
||||||
github.com/beorn7/perks v1.0.1 // indirect
|
github.com/beorn7/perks v1.0.1 // indirect
|
||||||
github.com/cenkalti/backoff/v4 v4.1.2 // indirect
|
github.com/cenkalti/backoff/v4 v4.1.2 // indirect
|
||||||
github.com/centrifugal/protocol v0.7.6 // indirect
|
github.com/centrifugal/protocol v0.8.10 // indirect
|
||||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||||
github.com/cheekybits/genny v1.0.0 // indirect
|
github.com/cheekybits/genny v1.0.0 // indirect
|
||||||
github.com/cockroachdb/apd/v2 v2.0.2 // indirect
|
github.com/cockroachdb/apd/v2 v2.0.2 // indirect
|
||||||
@ -185,7 +188,7 @@ require (
|
|||||||
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
|
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
|
||||||
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
github.com/hashicorp/golang-lru v0.5.4 // indirect
|
||||||
github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 // indirect
|
github.com/hashicorp/yamux v0.0.0-20210826001029-26ff87cf9493 // indirect
|
||||||
github.com/igm/sockjs-go/v3 v3.0.1 // indirect
|
github.com/igm/sockjs-go/v3 v3.0.2 // indirect
|
||||||
github.com/jessevdk/go-flags v1.5.0 // indirect
|
github.com/jessevdk/go-flags v1.5.0 // indirect
|
||||||
github.com/jonboulle/clockwork v0.3.0 // indirect
|
github.com/jonboulle/clockwork v0.3.0 // indirect
|
||||||
github.com/josharian/intern v1.0.0 // indirect
|
github.com/josharian/intern v1.0.0 // indirect
|
||||||
@ -213,7 +216,7 @@ require (
|
|||||||
github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b // indirect
|
github.com/protocolbuffers/txtpbfmt v0.0.0-20220428173112-74888fd59c2b // indirect
|
||||||
github.com/rs/cors v1.8.2 // indirect
|
github.com/rs/cors v1.8.2 // indirect
|
||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect
|
||||||
github.com/segmentio/encoding v0.3.2
|
github.com/segmentio/encoding v0.3.5
|
||||||
github.com/sercand/kuberesolver v2.4.0+incompatible // indirect
|
github.com/sercand/kuberesolver v2.4.0+incompatible // indirect
|
||||||
github.com/sergi/go-diff v1.1.0 // indirect
|
github.com/sergi/go-diff v1.1.0 // indirect
|
||||||
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect
|
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749 // indirect
|
||||||
@ -275,6 +278,7 @@ require (
|
|||||||
github.com/mattn/go-colorable v0.1.12 // indirect
|
github.com/mattn/go-colorable v0.1.12 // indirect
|
||||||
github.com/mitchellh/mapstructure v1.4.3 // indirect
|
github.com/mitchellh/mapstructure v1.4.3 // indirect
|
||||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
|
github.com/segmentio/asm v1.1.4 // indirect
|
||||||
go.starlark.net v0.0.0-20201118183435-e55f603d8c79 // indirect
|
go.starlark.net v0.0.0-20201118183435-e55f603d8c79 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -323,7 +327,6 @@ require (
|
|||||||
github.com/mschoch/smat v0.2.0 // indirect
|
github.com/mschoch/smat v0.2.0 // indirect
|
||||||
github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect
|
github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect
|
||||||
github.com/pierrec/lz4/v4 v4.1.8 // indirect
|
github.com/pierrec/lz4/v4 v4.1.8 // indirect
|
||||||
github.com/segmentio/asm v1.1.1 // indirect
|
|
||||||
github.com/valyala/fasttemplate v1.2.1 // indirect
|
github.com/valyala/fasttemplate v1.2.1 // indirect
|
||||||
github.com/wk8/go-ordered-map v1.0.0
|
github.com/wk8/go-ordered-map v1.0.0
|
||||||
github.com/xanzy/ssh-agent v0.3.0 // indirect
|
github.com/xanzy/ssh-agent v0.3.0 // indirect
|
||||||
|
37
go.sum
37
go.sum
@ -212,8 +212,8 @@ github.com/DATA-DOG/go-sqlmock v1.4.1/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q
|
|||||||
github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||||
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
|
||||||
github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
|
github.com/DataDog/zstd v1.4.1/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo=
|
||||||
github.com/FZambia/eagle v0.0.1 h1:FN1yTkPihMb5nE8SrlRjoCf7T9H9bTKJFQOm6ach2YU=
|
github.com/FZambia/eagle v0.0.2 h1:35qHDuXSQevZ4w9A51k4wU7OE/tPHTEWXoywA93hvkY=
|
||||||
github.com/FZambia/eagle v0.0.1/go.mod h1:xq6u/JeNZ5/8mrAQ76MMhzNTodASh9FavQlCgg4j48w=
|
github.com/FZambia/eagle v0.0.2/go.mod h1:xq6u/JeNZ5/8mrAQ76MMhzNTodASh9FavQlCgg4j48w=
|
||||||
github.com/FZambia/sentinel v1.1.0 h1:qrCBfxc8SvJihYNjBWgwUI93ZCvFe/PJIPTHKmlp8a8=
|
github.com/FZambia/sentinel v1.1.0 h1:qrCBfxc8SvJihYNjBWgwUI93ZCvFe/PJIPTHKmlp8a8=
|
||||||
github.com/FZambia/sentinel v1.1.0/go.mod h1:ytL1Am/RLlAoAXG6Kj5LNuw/TRRQrv2rt2FT26vP5gI=
|
github.com/FZambia/sentinel v1.1.0/go.mod h1:ytL1Am/RLlAoAXG6Kj5LNuw/TRRQrv2rt2FT26vP5gI=
|
||||||
github.com/GoogleCloudPlatform/cloudsql-proxy v1.29.0/go.mod h1:spvB9eLJH9dutlbPSRmHvSXXHOwGRyeXh1jVdquA2G8=
|
github.com/GoogleCloudPlatform/cloudsql-proxy v1.29.0/go.mod h1:spvB9eLJH9dutlbPSRmHvSXXHOwGRyeXh1jVdquA2G8=
|
||||||
@ -485,10 +485,10 @@ github.com/cenkalti/backoff/v4 v4.1.2 h1:6Yo7N8UP2K6LWZnW94DLVSSrbobcWdVzAYOisuD
|
|||||||
github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
|
||||||
github.com/centrifugal/centrifuge v0.19.0 h1:YHws0dRpgsBiI73tRl1wwaB13gzuaI1AM4IFcQQQqcw=
|
github.com/centrifugal/centrifuge v0.25.0 h1:QivFZRPWcN8w3I/gZ8Zs9rMe/KGZoKIS9Kgo1/bY4JE=
|
||||||
github.com/centrifugal/centrifuge v0.19.0/go.mod h1:O2elf8q3Qkie3z97wkqVqxB52pnOpPsfFUa7L88Lpy0=
|
github.com/centrifugal/centrifuge v0.25.0/go.mod h1:bFcSFalnROq/wcFeRiTG+wIbHsxEMW66QUnq95RY1d0=
|
||||||
github.com/centrifugal/protocol v0.7.6 h1:AfMwTZfwnFwZslIzQL4QtRnWSVO32RPSuk4iNS/V9tg=
|
github.com/centrifugal/protocol v0.8.10 h1:eezzBIU/4pWyl7a+NUnANYojJBASqbkPZcQh9b8YQRI=
|
||||||
github.com/centrifugal/protocol v0.7.6/go.mod h1:cJo0/BuXglhPfg0fgSgTXvBZ7y+9rdg4+nPbIDOVmlA=
|
github.com/centrifugal/protocol v0.8.10/go.mod h1:dlHBjKakr0r+f1pkfwSMfZ+cnpvidN7pQe1ZrsKfhtE=
|
||||||
github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
|
github.com/certifi/gocertifi v0.0.0-20191021191039-0944d244cd40/go.mod h1:sGbDF6GwGcLpkNXPUTkMRoywsNa/ol15pxFe6ERfguA=
|
||||||
github.com/cespare/xxhash v0.0.0-20181017004759-096ff4a8a059/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
github.com/cespare/xxhash v0.0.0-20181017004759-096ff4a8a059/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||||
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
|
||||||
@ -1227,10 +1227,8 @@ github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
|||||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219 h1:utua3L2IbQJmauC5IXdEA547bcoU5dozgQAfc8Onsg4=
|
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219 h1:utua3L2IbQJmauC5IXdEA547bcoU5dozgQAfc8Onsg4=
|
||||||
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
|
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
|
||||||
github.com/gomodule/redigo v1.8.4/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0=
|
github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws=
|
||||||
github.com/gomodule/redigo v1.8.5/go.mod h1:P9dn9mFrCBvWhGE1wpxx6fgq7BAeLBk+UUUzlpkBYO0=
|
github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE=
|
||||||
github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
|
|
||||||
github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
|
|
||||||
github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20180124185431-e89373fe6b4a/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
@ -1363,8 +1361,9 @@ github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/z
|
|||||||
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||||
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
|
||||||
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
|
||||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
|
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
|
||||||
|
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
github.com/gosimple/slug v1.12.0 h1:xzuhj7G7cGtd34NXnW/yF0l+AGNfWqwgh/IXgFy7dnc=
|
github.com/gosimple/slug v1.12.0 h1:xzuhj7G7cGtd34NXnW/yF0l+AGNfWqwgh/IXgFy7dnc=
|
||||||
github.com/gosimple/slug v1.12.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
|
github.com/gosimple/slug v1.12.0/go.mod h1:UiRaFH+GEilHstLUmcBgWcI42viBN7mAb818JrYOeFQ=
|
||||||
github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
|
github.com/gosimple/unidecode v1.0.1 h1:hZzFTMMqSswvf0LBJZCZgThIZrpDHFXux9KeGmn6T/o=
|
||||||
@ -1529,8 +1528,8 @@ github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmK
|
|||||||
github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
|
github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73tn/9oHe+/Y0h39VT4UCxmurVJkR5NA7kMEAOgSE=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||||
github.com/igm/sockjs-go/v3 v3.0.1 h1:rmgEkeKqBHCFf7uIAipYrYSX8x9LBB2nOxAac2sooak=
|
github.com/igm/sockjs-go/v3 v3.0.2 h1:2m0k53w0DBiGozeQUIEPR6snZFmpFpYvVsGnfLPNXbE=
|
||||||
github.com/igm/sockjs-go/v3 v3.0.1/go.mod h1:UqchsOjeagIBFHvd+RZpLaVRbCwGilEC08EDHsD1jYE=
|
github.com/igm/sockjs-go/v3 v3.0.2/go.mod h1:UqchsOjeagIBFHvd+RZpLaVRbCwGilEC08EDHsD1jYE=
|
||||||
github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||||
@ -1701,7 +1700,6 @@ github.com/klauspost/compress v1.15.2/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHU
|
|||||||
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v0.0.0-20170728055534-ae7887de9fa5/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.3/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
|
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
|
||||||
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
|
github.com/klauspost/crc32 v0.0.0-20161016154125-cb6bfca970f6/go.mod h1:+ZoRqAPRLkC4NPOvfYeR5KNOrY6TD+/sAC3HXPZgDYg=
|
||||||
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
github.com/klauspost/pgzip v1.0.2-0.20170402124221-0bf5dcad4ada/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||||
github.com/knadh/koanf v1.2.0/go.mod h1:xpPTwMhsA/aaQLAilyCCqfpEiY1gpa160AiCuWHJUjY=
|
github.com/knadh/koanf v1.2.0/go.mod h1:xpPTwMhsA/aaQLAilyCCqfpEiY1gpa160AiCuWHJUjY=
|
||||||
@ -2287,11 +2285,11 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt
|
|||||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||||
github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
|
github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo=
|
||||||
github.com/securego/gosec v0.0.0-20200203094520-d13bb6d2420c/go.mod h1:gp0gaHj0WlmPh9BdsTmo1aq6C27yIPWdxCKGFGdVKBE=
|
github.com/securego/gosec v0.0.0-20200203094520-d13bb6d2420c/go.mod h1:gp0gaHj0WlmPh9BdsTmo1aq6C27yIPWdxCKGFGdVKBE=
|
||||||
github.com/segmentio/asm v1.1.0/go.mod h1:4EUJGaKsB8ImLUwOGORVsNd9vTRDeh44JGsY4aKp5I4=
|
github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg=
|
||||||
github.com/segmentio/asm v1.1.1 h1:WzUpP9BRnRgoP+v8qywthpSe9U5KLq1uDGdJBEcSeQo=
|
github.com/segmentio/asm v1.1.4 h1:Q/FKBtrgnmDc0YMrurLROqG9mXE6Ndn276EtDnoWtMM=
|
||||||
github.com/segmentio/asm v1.1.1/go.mod h1:VCkA6aQH8usgIAUp4QMLQsAeaMl6iW7+VMLrW9Vkv0Y=
|
github.com/segmentio/asm v1.1.4/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg=
|
||||||
github.com/segmentio/encoding v0.3.2 h1:gkXXteOfNaPPlrXTEf/e5tWvaQGVJWnvT3LqMzUeH7U=
|
github.com/segmentio/encoding v0.3.5 h1:UZEiaZ55nlXGDL92scoVuw00RmiRCazIEmvPSbSvt8Y=
|
||||||
github.com/segmentio/encoding v0.3.2/go.mod h1:waft2p6XI4z2pk07M0YzZV4wEiqaRvsBSyWNHxVx4gU=
|
github.com/segmentio/encoding v0.3.5/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM=
|
||||||
github.com/segmentio/fasthash v0.0.0-20180216231524-a72b379d632e/go.mod h1:tm/wZFQ8e24NYaBGIlnO2WGCAi67re4HHuOm0sftE/M=
|
github.com/segmentio/fasthash v0.0.0-20180216231524-a72b379d632e/go.mod h1:tm/wZFQ8e24NYaBGIlnO2WGCAi67re4HHuOm0sftE/M=
|
||||||
github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
||||||
github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
github.com/segmentio/kafka-go v0.2.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
||||||
@ -3097,6 +3095,7 @@ golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||||||
golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220330033206-e17cdc41300f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f h1:v4INt8xihDGvnrfjMDVXGxw9wrfxYyCjk0KbXjhR55s=
|
||||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
@ -305,7 +305,7 @@
|
|||||||
"baron": "3.0.3",
|
"baron": "3.0.3",
|
||||||
"brace": "0.11.1",
|
"brace": "0.11.1",
|
||||||
"calculate-size": "1.1.1",
|
"calculate-size": "1.1.1",
|
||||||
"centrifuge": "2.8.5",
|
"centrifuge": "3.0.1",
|
||||||
"classnames": "2.3.1",
|
"classnames": "2.3.1",
|
||||||
"comlink": "4.3.1",
|
"comlink": "4.3.1",
|
||||||
"common-tags": "1.8.2",
|
"common-tags": "1.8.2",
|
||||||
|
@ -20,9 +20,9 @@ export enum LiveChannelScope {
|
|||||||
* @alpha
|
* @alpha
|
||||||
*/
|
*/
|
||||||
export enum LiveChannelType {
|
export enum LiveChannelType {
|
||||||
DataStream = 'stream', // each message contains a batch of rows that will be appened to previous values
|
DataStream = 'stream', // each message contains a batch of rows that will be appended to previous values
|
||||||
DataFrame = 'frame', // each message is an entire data frame and should *replace* previous content
|
DataFrame = 'frame', // each message is an entire data frame and should *replace* previous content
|
||||||
JSON = 'json', // arbitray json message
|
JSON = 'json', // arbitrary json message
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum LiveChannelConnectionState {
|
export enum LiveChannelConnectionState {
|
||||||
@ -30,11 +30,13 @@ export enum LiveChannelConnectionState {
|
|||||||
Pending = 'pending',
|
Pending = 'pending',
|
||||||
/** Connected to the channel */
|
/** Connected to the channel */
|
||||||
Connected = 'connected',
|
Connected = 'connected',
|
||||||
|
/** Connecting to a channel */
|
||||||
|
Connecting = 'connecting',
|
||||||
/** Disconnected from the channel. The channel will reconnect when possible */
|
/** Disconnected from the channel. The channel will reconnect when possible */
|
||||||
Disconnected = 'disconnected',
|
Disconnected = 'disconnected',
|
||||||
/** Was at some point connected, and will not try to reconnect */
|
/** Was at some point connected, and will not try to reconnect */
|
||||||
Shutdown = 'shutdown',
|
Shutdown = 'shutdown',
|
||||||
/** Channel configuraiton was invalid and will not connect */
|
/** Channel configuration was invalid and will not connect */
|
||||||
Invalid = 'invalid',
|
Invalid = 'invalid',
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,7 +141,7 @@ export interface LiveChannelAddress {
|
|||||||
path: string;
|
path: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Additional metadata passed to a channel. The backend will propigate this JSON object to
|
* Additional metadata passed to a channel. The backend will propagate this JSON object to
|
||||||
* each OnSubscribe and RunStream calls. This value should be constant across multiple requests
|
* each OnSubscribe and RunStream calls. This value should be constant across multiple requests
|
||||||
* to the same channel path
|
* to the same channel path
|
||||||
*/
|
*/
|
||||||
|
@ -99,19 +99,14 @@ func ProvideService(plugCtxProvider *plugincontext.Provider, cfg *setting.Cfg, r
|
|||||||
|
|
||||||
logger.Debug("GrafanaLive initialization", "ha", g.IsHA())
|
logger.Debug("GrafanaLive initialization", "ha", g.IsHA())
|
||||||
|
|
||||||
// We use default config here as starting point. Default config contains
|
|
||||||
// reasonable values for available options.
|
|
||||||
scfg := centrifuge.DefaultConfig
|
|
||||||
|
|
||||||
// scfg.LogLevel = centrifuge.LogLevelDebug
|
|
||||||
scfg.LogHandler = handleLog
|
|
||||||
scfg.LogLevel = centrifuge.LogLevelError
|
|
||||||
scfg.MetricsNamespace = "grafana_live"
|
|
||||||
|
|
||||||
// Node is the core object in Centrifuge library responsible for many useful
|
// Node is the core object in Centrifuge library responsible for many useful
|
||||||
// things. For example Node allows to publish messages to channels from server
|
// things. For example Node allows to publish messages to channels from server
|
||||||
// side with its Publish method.
|
// side with its Publish method.
|
||||||
node, err := centrifuge.New(scfg)
|
node, err := centrifuge.New(centrifuge.Config{
|
||||||
|
LogHandler: handleLog,
|
||||||
|
LogLevel: centrifuge.LogLevelError,
|
||||||
|
MetricsNamespace: "grafana_live",
|
||||||
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -312,12 +307,9 @@ func ProvideService(plugCtxProvider *plugincontext.Provider, cfg *setting.Cfg, r
|
|||||||
})
|
})
|
||||||
|
|
||||||
client.OnDisconnect(func(e centrifuge.DisconnectEvent) {
|
client.OnDisconnect(func(e centrifuge.DisconnectEvent) {
|
||||||
reason := "normal"
|
reason := e.Disconnect.Reason
|
||||||
if e.Disconnect != nil {
|
if e.Disconnect.Code == 3001 { // Shutdown
|
||||||
reason = e.Disconnect.Reason
|
return
|
||||||
if e.Disconnect.Code == 3001 { // Shutdown
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
logger.Debug("Client disconnected", "user", client.UserID(), "client", client.ID(), "reason", reason, "elapsed", time.Since(connectedAt))
|
logger.Debug("Client disconnected", "user", client.UserID(), "client", client.ID(), "reason", reason, "elapsed", time.Since(connectedAt))
|
||||||
})
|
})
|
||||||
@ -339,6 +331,7 @@ func ProvideService(plugCtxProvider *plugincontext.Provider, cfg *setting.Cfg, r
|
|||||||
|
|
||||||
// Use a pure websocket transport.
|
// Use a pure websocket transport.
|
||||||
wsHandler := centrifuge.NewWebsocketHandler(node, centrifuge.WebsocketConfig{
|
wsHandler := centrifuge.NewWebsocketHandler(node, centrifuge.WebsocketConfig{
|
||||||
|
ProtocolVersion: centrifuge.ProtocolVersion2,
|
||||||
ReadBufferSize: 1024,
|
ReadBufferSize: 1024,
|
||||||
WriteBufferSize: 1024,
|
WriteBufferSize: 1024,
|
||||||
CheckOrigin: checkOrigin,
|
CheckOrigin: checkOrigin,
|
||||||
@ -711,10 +704,11 @@ func (g *GrafanaLive) handleOnSubscribe(ctx context.Context, client *centrifuge.
|
|||||||
logger.Debug("Client subscribed", "user", client.UserID(), "client", client.ID(), "channel", e.Channel)
|
logger.Debug("Client subscribed", "user", client.UserID(), "client", client.ID(), "channel", e.Channel)
|
||||||
return centrifuge.SubscribeReply{
|
return centrifuge.SubscribeReply{
|
||||||
Options: centrifuge.SubscribeOptions{
|
Options: centrifuge.SubscribeOptions{
|
||||||
Presence: reply.Presence,
|
EmitPresence: reply.Presence,
|
||||||
JoinLeave: reply.JoinLeave,
|
EmitJoinLeave: reply.JoinLeave,
|
||||||
Recover: reply.Recover,
|
PushJoinLeave: reply.JoinLeave,
|
||||||
Data: reply.Data,
|
EnableRecovery: reply.Recover,
|
||||||
|
Data: reply.Data,
|
||||||
},
|
},
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ func (c *Caller) CallManagedStreams(orgID int64) ([]*managedstream.ManagedChanne
|
|||||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
resp, err := c.node.Survey(ctx, managedStreamsCall, jsonData)
|
resp, err := c.node.Survey(ctx, managedStreamsCall, jsonData, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
import Centrifuge, {
|
import {
|
||||||
JoinLeaveContext,
|
Subscription,
|
||||||
|
JoinContext,
|
||||||
|
LeaveContext,
|
||||||
PublicationContext,
|
PublicationContext,
|
||||||
SubscribeErrorContext,
|
SubscriptionErrorContext,
|
||||||
SubscribeSuccessContext,
|
SubscribedContext,
|
||||||
SubscriptionEvents,
|
} from 'centrifuge';
|
||||||
UnsubscribeContext,
|
|
||||||
} from 'centrifuge/dist/centrifuge';
|
|
||||||
import { Subject, of, Observable } from 'rxjs';
|
import { Subject, of, Observable } from 'rxjs';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -34,7 +34,7 @@ export class CentrifugeLiveChannel<T = any> {
|
|||||||
// Hold on to the last header with schema
|
// Hold on to the last header with schema
|
||||||
lastMessageWithSchema?: DataFrameJSON;
|
lastMessageWithSchema?: DataFrameJSON;
|
||||||
|
|
||||||
subscription?: Centrifuge.Subscription;
|
subscription?: Subscription;
|
||||||
shutdownCallback?: () => void;
|
shutdownCallback?: () => void;
|
||||||
initalized?: boolean;
|
initalized?: boolean;
|
||||||
|
|
||||||
@ -54,46 +54,44 @@ export class CentrifugeLiveChannel<T = any> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// This should only be called when centrifuge is connected
|
// This should only be called when centrifuge is connected
|
||||||
initalize(): SubscriptionEvents {
|
initalize(): void {
|
||||||
if (this.initalized) {
|
if (this.initalized) {
|
||||||
throw new Error('Channel already initalized: ' + this.id);
|
throw new Error('Channel already initalized: ' + this.id);
|
||||||
}
|
}
|
||||||
this.initalized = true;
|
this.initalized = true;
|
||||||
|
|
||||||
const events: SubscriptionEvents = {
|
this.subscription!.on('publication', (ctx: PublicationContext) => {
|
||||||
// Called when a message is received from the socket
|
try {
|
||||||
publish: (ctx: PublicationContext) => {
|
if (ctx.data) {
|
||||||
try {
|
if (ctx.data.schema) {
|
||||||
if (ctx.data) {
|
this.lastMessageWithSchema = ctx.data as DataFrameJSON;
|
||||||
if (ctx.data.schema) {
|
|
||||||
this.lastMessageWithSchema = ctx.data as DataFrameJSON;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.stream.next({
|
|
||||||
type: LiveChannelEventType.Message,
|
|
||||||
message: ctx.data,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clear any error messages
|
this.stream.next({
|
||||||
if (this.currentStatus.error) {
|
type: LiveChannelEventType.Message,
|
||||||
this.currentStatus.timestamp = Date.now();
|
message: ctx.data,
|
||||||
delete this.currentStatus.error;
|
});
|
||||||
this.sendStatus();
|
}
|
||||||
}
|
|
||||||
} catch (err) {
|
// Clear any error messages
|
||||||
console.log('publish error', this.addr, err);
|
if (this.currentStatus.error) {
|
||||||
this.currentStatus.error = err;
|
|
||||||
this.currentStatus.timestamp = Date.now();
|
this.currentStatus.timestamp = Date.now();
|
||||||
|
delete this.currentStatus.error;
|
||||||
this.sendStatus();
|
this.sendStatus();
|
||||||
}
|
}
|
||||||
},
|
} catch (err) {
|
||||||
error: (ctx: SubscribeErrorContext) => {
|
console.log('publish error', this.addr, err);
|
||||||
|
this.currentStatus.error = err;
|
||||||
this.currentStatus.timestamp = Date.now();
|
this.currentStatus.timestamp = Date.now();
|
||||||
this.currentStatus.error = ctx.message;
|
|
||||||
this.sendStatus();
|
this.sendStatus();
|
||||||
},
|
}
|
||||||
subscribe: (ctx: SubscribeSuccessContext) => {
|
})
|
||||||
|
.on('error', (ctx: SubscriptionErrorContext) => {
|
||||||
|
this.currentStatus.timestamp = Date.now();
|
||||||
|
this.currentStatus.error = ctx.error.message;
|
||||||
|
this.sendStatus();
|
||||||
|
})
|
||||||
|
.on('subscribed', (ctx: SubscribedContext) => {
|
||||||
this.currentStatus.timestamp = Date.now();
|
this.currentStatus.timestamp = Date.now();
|
||||||
this.currentStatus.state = LiveChannelConnectionState.Connected;
|
this.currentStatus.state = LiveChannelConnectionState.Connected;
|
||||||
delete this.currentStatus.error;
|
delete this.currentStatus.error;
|
||||||
@ -101,23 +99,24 @@ export class CentrifugeLiveChannel<T = any> {
|
|||||||
if (ctx.data?.schema) {
|
if (ctx.data?.schema) {
|
||||||
this.lastMessageWithSchema = ctx.data as DataFrameJSON;
|
this.lastMessageWithSchema = ctx.data as DataFrameJSON;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sendStatus(ctx.data);
|
this.sendStatus(ctx.data);
|
||||||
},
|
})
|
||||||
unsubscribe: (ctx: UnsubscribeContext) => {
|
.on('unsubscribed', () => {
|
||||||
this.currentStatus.timestamp = Date.now();
|
this.currentStatus.timestamp = Date.now();
|
||||||
this.currentStatus.state = LiveChannelConnectionState.Disconnected;
|
this.currentStatus.state = LiveChannelConnectionState.Disconnected;
|
||||||
this.sendStatus();
|
this.sendStatus();
|
||||||
},
|
})
|
||||||
};
|
.on('subscribing', () => {
|
||||||
|
this.currentStatus.timestamp = Date.now();
|
||||||
events.join = (ctx: JoinLeaveContext) => {
|
this.currentStatus.state = LiveChannelConnectionState.Connecting;
|
||||||
this.stream.next({ type: LiveChannelEventType.Join, user: ctx.info.user });
|
this.sendStatus();
|
||||||
};
|
})
|
||||||
events.leave = (ctx: JoinLeaveContext) => {
|
.on('join', (ctx: JoinContext) => {
|
||||||
this.stream.next({ type: LiveChannelEventType.Leave, user: ctx.info.user });
|
this.stream.next({ type: LiveChannelEventType.Join, user: ctx.info.user });
|
||||||
};
|
})
|
||||||
return events;
|
.on('leave', (ctx: LeaveContext) => {
|
||||||
|
this.stream.next({ type: LiveChannelEventType.Leave, user: ctx.info.user });
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private sendStatus(message?: any) {
|
private sendStatus(message?: any) {
|
||||||
@ -171,7 +170,7 @@ export class CentrifugeLiveChannel<T = any> {
|
|||||||
|
|
||||||
return this.subscription!.presence().then((v) => {
|
return this.subscription!.presence().then((v) => {
|
||||||
return {
|
return {
|
||||||
users: Object.keys(v.presence),
|
users: Object.keys(v.clients),
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import Centrifuge from 'centrifuge/dist/centrifuge';
|
import { Centrifuge, State } from 'centrifuge';
|
||||||
import { BehaviorSubject, Observable, share, startWith } from 'rxjs';
|
import { BehaviorSubject, Observable, share, startWith } from 'rxjs';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
@ -78,30 +78,27 @@ export class CentrifugeService implements CentrifugeSrv {
|
|||||||
this.centrifuge = new Centrifuge(liveUrl, {
|
this.centrifuge = new Centrifuge(liveUrl, {
|
||||||
timeout: 30000,
|
timeout: 30000,
|
||||||
});
|
});
|
||||||
this.centrifuge.setConnectData({
|
// orgRole is set when logged in *or* anonymous users can use grafana
|
||||||
sessionId: deps.sessionId,
|
|
||||||
orgId: deps.orgId,
|
|
||||||
});
|
|
||||||
// orgRole is set when logged in *or* anonomus users can use grafana
|
|
||||||
if (deps.liveEnabled && deps.orgRole !== '') {
|
if (deps.liveEnabled && deps.orgRole !== '') {
|
||||||
this.centrifuge.connect(); // do connection
|
this.centrifuge.connect(); // do connection
|
||||||
}
|
}
|
||||||
this.connectionState = new BehaviorSubject<boolean>(this.centrifuge.isConnected());
|
this.connectionState = new BehaviorSubject<boolean>(this.centrifuge.state === State.Connected);
|
||||||
this.connectionBlocker = new Promise<void>((resolve) => {
|
this.connectionBlocker = new Promise<void>((resolve) => {
|
||||||
if (this.centrifuge.isConnected()) {
|
if (this.centrifuge.state === State.Connected) {
|
||||||
return resolve();
|
return resolve();
|
||||||
}
|
}
|
||||||
const connectListener = () => {
|
const connectListener = () => {
|
||||||
resolve();
|
resolve();
|
||||||
this.centrifuge.removeListener('connect', connectListener);
|
this.centrifuge.removeListener('connected', connectListener);
|
||||||
};
|
};
|
||||||
this.centrifuge.addListener('connect', connectListener);
|
this.centrifuge.addListener('connected', connectListener);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Register global listeners
|
// Register global listeners
|
||||||
this.centrifuge.on('connect', this.onConnect);
|
this.centrifuge.on('connected', this.onConnect);
|
||||||
this.centrifuge.on('disconnect', this.onDisconnect);
|
this.centrifuge.on('connecting', this.onDisconnect);
|
||||||
this.centrifuge.on('publish', this.onServerSideMessage);
|
this.centrifuge.on('disconnected', this.onDisconnect);
|
||||||
|
this.centrifuge.on('publication', this.onServerSideMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------
|
//----------------------------------------------------------
|
||||||
@ -154,11 +151,15 @@ export class CentrifugeService implements CentrifugeSrv {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async initChannel(channel: CentrifugeLiveChannel): Promise<void> {
|
private async initChannel(channel: CentrifugeLiveChannel): Promise<void> {
|
||||||
const events = channel.initalize();
|
if (this.centrifuge.state !== State.Connected) {
|
||||||
if (!this.centrifuge.isConnected()) {
|
|
||||||
await this.connectionBlocker;
|
await this.connectionBlocker;
|
||||||
}
|
}
|
||||||
channel.subscription = this.centrifuge.subscribe(channel.id, events, { data: channel.addr.data });
|
const subscription = this.centrifuge.newSubscription(channel.id, {
|
||||||
|
data: channel.addr.data,
|
||||||
|
});
|
||||||
|
channel.subscription = subscription;
|
||||||
|
channel.initalize();
|
||||||
|
subscription.subscribe();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -220,10 +221,10 @@ export class CentrifugeService implements CentrifugeSrv {
|
|||||||
* Since the initial request and subscription are on the same socket, this will support HA setups
|
* Since the initial request and subscription are on the same socket, this will support HA setups
|
||||||
*/
|
*/
|
||||||
getQueryData: CentrifugeSrv['getQueryData'] = async (options) => {
|
getQueryData: CentrifugeSrv['getQueryData'] = async (options) => {
|
||||||
if (!this.centrifuge.isConnected()) {
|
if (this.centrifuge.state !== State.Connected) {
|
||||||
await this.connectionBlocker;
|
await this.connectionBlocker;
|
||||||
}
|
}
|
||||||
return this.centrifuge.namedRPC('grafana.query', options.body);
|
return this.centrifuge.rpc('grafana.query', options.body);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -318,6 +318,9 @@ const getStyles = stylesFactory((theme: GrafanaTheme) => ({
|
|||||||
[LiveChannelConnectionState.Connected]: css`
|
[LiveChannelConnectionState.Connected]: css`
|
||||||
border: 1px solid ${theme.palette.brandSuccess};
|
border: 1px solid ${theme.palette.brandSuccess};
|
||||||
`,
|
`,
|
||||||
|
[LiveChannelConnectionState.Connecting]: css`
|
||||||
|
border: 1px solid ${theme.palette.brandWarning};
|
||||||
|
`,
|
||||||
[LiveChannelConnectionState.Disconnected]: css`
|
[LiveChannelConnectionState.Disconnected]: css`
|
||||||
border: 1px solid ${theme.palette.brandWarning};
|
border: 1px solid ${theme.palette.brandWarning};
|
||||||
`,
|
`,
|
||||||
|
17
yarn.lock
17
yarn.lock
@ -16067,12 +16067,13 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"centrifuge@npm:2.8.5":
|
"centrifuge@npm:3.0.1":
|
||||||
version: 2.8.5
|
version: 3.0.1
|
||||||
resolution: "centrifuge@npm:2.8.5"
|
resolution: "centrifuge@npm:3.0.1"
|
||||||
dependencies:
|
dependencies:
|
||||||
protobufjs: ^6.11.2
|
events: ^3.3.0
|
||||||
checksum: 27db6d3b92aa52fa7a5f7ac9a5643338bae0a231db61d791bbad0d4858a67f72991f12a63e6f042179bafd0854ebf832c42bde2ae5ddd2a26124d094c1d5cf65
|
protobufjs: ^6.11.3
|
||||||
|
checksum: cf17b63fe9c684f121348a8597da0686a1f45fff2f85eaed6a3452504caeb1098c1524b10f197fe3811a11199214b88b75f5935ac86cb9753146fcc0d11f418c
|
||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
@ -20546,7 +20547,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"events@npm:^3.0.0, events@npm:^3.2.0":
|
"events@npm:^3.0.0, events@npm:^3.2.0, events@npm:^3.3.0":
|
||||||
version: 3.3.0
|
version: 3.3.0
|
||||||
resolution: "events@npm:3.3.0"
|
resolution: "events@npm:3.3.0"
|
||||||
checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780
|
checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780
|
||||||
@ -22389,7 +22390,7 @@ __metadata:
|
|||||||
baron: 3.0.3
|
baron: 3.0.3
|
||||||
brace: 0.11.1
|
brace: 0.11.1
|
||||||
calculate-size: 1.1.1
|
calculate-size: 1.1.1
|
||||||
centrifuge: 2.8.5
|
centrifuge: 3.0.1
|
||||||
classnames: 2.3.1
|
classnames: 2.3.1
|
||||||
comlink: 4.3.1
|
comlink: 4.3.1
|
||||||
common-tags: 1.8.2
|
common-tags: 1.8.2
|
||||||
@ -31394,7 +31395,7 @@ __metadata:
|
|||||||
languageName: node
|
languageName: node
|
||||||
linkType: hard
|
linkType: hard
|
||||||
|
|
||||||
"protobufjs@npm:^6.11.2":
|
"protobufjs@npm:^6.11.3":
|
||||||
version: 6.11.3
|
version: 6.11.3
|
||||||
resolution: "protobufjs@npm:6.11.3"
|
resolution: "protobufjs@npm:6.11.3"
|
||||||
dependencies:
|
dependencies:
|
||||||
|
Reference in New Issue
Block a user