@@ -5,26 +5,47 @@ import { logger } from "./logger";
55type TUseCentrifuge = ( ) => {
66 centrifuge : Centrifuge
77}
8- export const useCentrifuge : TUseCentrifuge = ( ) => {
9- const centrifuge = new Centrifuge ( WS_URL )
108
11- centrifuge . on ( 'connected' , ( ctx ) => {
12- logger ( [ 'connected' , ctx ] ) ;
13- } ) ;
9+ class WSConnection {
10+ private readonly centrifuge : Centrifuge ;
1411
15- centrifuge . on ( 'publication' , ( ctx ) => {
16- logger ( [ 'publication' , ctx ] ) ;
17- } ) ;
12+ // eslint-disable-next-line no-use-before-define
13+ private static instance : WSConnection ;
1814
19- centrifuge . on ( 'disconnected' , ( ctx ) => {
20- logger ( [ 'disconnected' , ctx ] ) ;
21- } ) ;
15+ private constructor ( ) {
16+ this . centrifuge = new Centrifuge ( WS_URL ) ;
2217
23- centrifuge . on ( 'error ' , ( ctx ) => {
24- logger ( [ 'error ' , ctx ] ) ;
25- } )
18+ this . centrifuge . on ( 'connected ' , ( ctx ) => {
19+ logger ( [ 'connected ' , ctx ] ) ;
20+ } ) ;
2621
27- centrifuge . connect ( ) ;
22+ this . centrifuge . on ( 'publication' , ( ctx ) => {
23+ logger ( [ 'publication' , ctx ] ) ;
24+ } ) ;
2825
29- return { centrifuge }
26+ this . centrifuge . on ( 'disconnected' , ( ctx ) => {
27+ logger ( [ 'disconnected' , ctx ] ) ;
28+ } ) ;
29+
30+ this . centrifuge . on ( 'error' , ( ctx ) => {
31+ logger ( [ 'error' , ctx ] ) ;
32+ } )
33+
34+ this . centrifuge . connect ( ) ;
35+ }
36+
37+ public static getInstance ( ) : WSConnection {
38+ if ( ! WSConnection . instance ) {
39+ WSConnection . instance = new WSConnection ( ) ;
40+ }
41+
42+ return WSConnection . instance ;
43+ }
44+
45+ public getCentrifuge ( ) {
46+ return this . centrifuge ;
47+ }
3048}
49+
50+
51+ export const useCentrifuge : TUseCentrifuge = ( ) => ( { centrifuge : WSConnection . getInstance ( ) . getCentrifuge ( ) } )
0 commit comments