@@ -9,19 +9,17 @@ namespace Linq2GraphQL.Client.Subscriptions;
99
1010public class WSClient : IAsyncDisposable
1111{
12+ private readonly GraphClient _graphClient ;
1213 private readonly GraphQLRequest payload ;
13- private readonly SubscriptionProtocol subscriptionProtocol ;
1414
1515 private readonly Subject < string > subscriptionSubject = new ( ) ;
16- private readonly string url ;
1716 private readonly WebsocketClient client ;
1817
1918 private readonly JsonSerializerOptions jsonOptions ;
2019
21- public WSClient ( string url , SubscriptionProtocol subprotocol , GraphQLRequest payload )
20+ public WSClient ( GraphClient graphClient , GraphQLRequest payload )
2221 {
23- this . url = url ;
24- subscriptionProtocol = subprotocol ;
22+ _graphClient = graphClient ;
2523 this . payload = payload ;
2624 jsonOptions = new JsonSerializerOptions
2725 {
@@ -35,7 +33,7 @@ public WSClient(string url, SubscriptionProtocol subprotocol, GraphQLRequest pay
3533 return ws ;
3634 } ) ;
3735
38- client = new WebsocketClient ( new Uri ( url ) , factory )
36+ client = new WebsocketClient ( new Uri ( _graphClient . SubscriptionUrl ) , factory )
3937 {
4038 ReconnectTimeout = TimeSpan . FromSeconds ( 30 )
4139 } ;
@@ -74,7 +72,18 @@ public async Task Start()
7472 } ) ;
7573
7674 await client . Start ( ) ;
77- SendRequest ( new WebsocketRequest ( "connection_init" ) ) ;
75+
76+ if ( _graphClient . WSConnectionInitPayload is not null )
77+ {
78+ var initPayload = _graphClient . WSConnectionInitPayload ( _graphClient ) ;
79+ if ( initPayload is not null )
80+ {
81+ SendRequest ( new WebsocketRequest ( "connection_init" )
82+ {
83+ Payload = await _graphClient . WSConnectionInitPayload ( _graphClient )
84+ } ) ;
85+ }
86+ }
7887
7988 var subscriptionRequest = new WebsocketRequest ( GetSubscribeCommand ( ) )
8089 {
@@ -87,7 +96,7 @@ public async Task Start()
8796
8897 private string GetSubprotocolString ( )
8998 {
90- switch ( subscriptionProtocol )
99+ switch ( _graphClient . SubscriptionProtocol )
91100 {
92101 case SubscriptionProtocol . GraphQLWebSocket :
93102 return "graphql-transport-ws" ;
@@ -96,13 +105,13 @@ private string GetSubprotocolString()
96105 return "graphql-ws" ;
97106
98107 default :
99- throw new Exception ( $ "{ subscriptionProtocol } is unknown") ;
108+ throw new Exception ( $ "{ _graphClient . SubscriptionProtocol } is unknown") ;
100109 }
101110 }
102111
103112 private string GetSubscribeCommand ( )
104113 {
105- switch ( subscriptionProtocol )
114+ switch ( _graphClient . SubscriptionProtocol )
106115 {
107116 case SubscriptionProtocol . GraphQLWebSocket :
108117 return "subscribe" ;
@@ -111,7 +120,7 @@ private string GetSubscribeCommand()
111120 return "start" ;
112121
113122 default :
114- throw new Exception ( $ "{ subscriptionProtocol } is unknown") ;
123+ throw new Exception ( $ "{ _graphClient . SubscriptionProtocol } is unknown") ;
115124 }
116125 }
117126
0 commit comments