Skip to content

Commit 436be61

Browse files
committed
Reconnect on failed ws sends, improve logging
1 parent fd80fea commit 436be61

File tree

1 file changed

+21
-4
lines changed

1 file changed

+21
-4
lines changed

Signal-Windows.Lib/SignalWebSocket.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ private void WebSocket_Closed(IWebSocket sender, WebSocketClosedEventArgs args)
5151

5252
private void WebSocket_MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args)
5353
{
54+
Logger.LogTrace("WebSocket_MessageReceived()");
5455
try
5556
{
5657
using (var data = args.GetDataStream())
@@ -75,6 +76,7 @@ public void Close(ushort code, string reason)
7576

7677
public async Task ConnectAsync()
7778
{
79+
Logger.LogTrace("ConnectAsync()");
7880
var locked = await SemaphoreSlim.WaitAsync(0, Token); // ensure no threads are reconnecting at the same time
7981
if (locked)
8082
{
@@ -83,6 +85,7 @@ public async Task ConnectAsync()
8385
try
8486
{
8587
CreateMessageWebSocket();
88+
Logger.LogTrace("WebSocket.ConnectAsync()");
8689
await WebSocket.ConnectAsync(SignalWSUri).AsTask(Token);
8790
SemaphoreSlim.Release();
8891
break;
@@ -100,6 +103,10 @@ public async Task ConnectAsync()
100103
}
101104
}
102105
}
106+
else
107+
{
108+
Logger.LogTrace("ConnectAsync() not reconnecting: Reconnect in progress");
109+
}
103110
}
104111

105112
public void Dispose()
@@ -109,11 +116,21 @@ public void Dispose()
109116

110117
public async Task SendMessage(byte[] data)
111118
{
112-
using (var dataWriter = new DataWriter(WebSocket.OutputStream))
119+
Logger.LogTrace("SendMessage()");
120+
try
121+
{
122+
using (var dataWriter = new DataWriter(WebSocket.OutputStream))
123+
{
124+
dataWriter.WriteBytes(data);
125+
await dataWriter.StoreAsync();
126+
dataWriter.DetachStream();
127+
}
128+
}
129+
catch (OperationCanceledException) { }
130+
catch (Exception e)
113131
{
114-
dataWriter.WriteBytes(data);
115-
await dataWriter.StoreAsync();
116-
dataWriter.DetachStream();
132+
Logger.LogError($"SendMessage() failed: {e.Message}\n{e.StackTrace}");
133+
var t = Task.Run(ConnectAsync);
117134
}
118135
}
119136
}

0 commit comments

Comments
 (0)