Skip to content

Commit 0fe6e19

Browse files
committed
reduce string allocs
1 parent 365f1e5 commit 0fe6e19

File tree

4 files changed

+49
-9
lines changed

4 files changed

+49
-9
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Linq2GraphQL.Client.Subscriptions
2+
{
3+
internal class SubscribeCommands
4+
{
5+
internal const string Subscribe = "subscribe";
6+
internal const string Start = "start";
7+
}
8+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Linq2GraphQL.Client.Subscriptions
8+
{
9+
internal static class SubscriptionProtocols
10+
{
11+
internal const string GraphQl_Transport_WS = "graphql-transport-ws";
12+
internal const string GraphQl_WS = "graphql-ws";
13+
}
14+
}

src/Linq2GraphQL.Client.Subscriptions/WSClient.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Net.WebSockets;
1+
using System.Diagnostics;
2+
using System.Net.WebSockets;
23
using System.Reactive.Linq;
34
using System.Reactive.Subjects;
45
using System.Text.Json;
@@ -64,7 +65,7 @@ public async Task Start()
6465
//Filter General response
6566
var tt = client.MessageReceived.Select(m => JsonSerializer.Deserialize<WebsocketResponse>(m.ToString()));
6667

67-
tt.Where(e => e.Type == "ping").Subscribe(msg => SendRequest(new WebsocketRequest("pong")));
68+
tt.Where(e => e.Type == WebsocketRequestTypes.PING).Subscribe(msg => SendRequest(new WebsocketRequest(WebsocketRequestTypes.PONG)));
6869

6970
tt.Where(e => !string.IsNullOrEmpty(e?.Id)).Subscribe(r =>
7071
{
@@ -73,7 +74,7 @@ public async Task Start()
7374

7475
await client.Start();
7576

76-
var initRequest = new WebsocketRequest("connection_init");
77+
var initRequest = new WebsocketRequest(WebsocketRequestTypes.CONNECTION_INIT);
7778
if (_graphClient.WSConnectionInitPayload is not null)
7879
{
7980
var initPayload = await _graphClient.WSConnectionInitPayload(_graphClient);
@@ -98,10 +99,10 @@ private string GetSubprotocolString()
9899
switch (_graphClient.SubscriptionProtocol)
99100
{
100101
case SubscriptionProtocol.GraphQLWebSocket:
101-
return "graphql-transport-ws";
102+
return SubscriptionProtocols.GraphQl_Transport_WS;
102103

103104
case SubscriptionProtocol.ApolloWebSocket:
104-
return "graphql-ws";
105+
return SubscriptionProtocols.GraphQl_WS;
105106

106107
default:
107108
throw new Exception($"{_graphClient.SubscriptionProtocol} is unknown");
@@ -113,19 +114,20 @@ private string GetSubscribeCommand()
113114
switch (_graphClient.SubscriptionProtocol)
114115
{
115116
case SubscriptionProtocol.GraphQLWebSocket:
116-
return "subscribe";
117+
return SubscribeCommands.Subscribe;
117118

118119
case SubscriptionProtocol.ApolloWebSocket:
119-
return "start";
120+
return SubscribeCommands.Start;
120121

121122
default:
122123
throw new Exception($"{_graphClient.SubscriptionProtocol} is unknown");
123124
}
124125
}
125126

126-
private void LogMessage(string message)
127+
private static void LogMessage(string message)
127128
{
128-
Console.WriteLine($"{message} - {DateTime.Now.ToString("T")}");
129+
// Write logs to debug console
130+
Debug.WriteLine($"{message} - {DateTime.Now.ToString("T")}");
129131
}
130132

131133
private void SendRequest(WebsocketRequest request)
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
7+
namespace Linq2GraphQL.Client.Subscriptions
8+
{
9+
internal class WebsocketRequestTypes
10+
{
11+
internal const string PING = "ping";
12+
internal const string PONG = "pong";
13+
internal const string CONNECTION_INIT = "connection_init";
14+
15+
}
16+
}

0 commit comments

Comments
 (0)