|
@@ -103,66 +103,74 @@ namespace InABox.Rpc
|
|
|
|
|
|
private WebSocket? CreateSocket(string url, bool secure, CancellationToken ct)
|
|
|
{
|
|
|
- //WebsocketClient client;
|
|
|
-
|
|
|
- //WebSocket socket = null;
|
|
|
+ WebSocket? client = null;
|
|
|
+
|
|
|
var address = $"{(secure ? "wss" : "ws")}://{url}";
|
|
|
- var client = new WebSocket(address);
|
|
|
-
|
|
|
- var openEvent = new ManualResetEventSlim();
|
|
|
- var open = false;
|
|
|
- void onOpen(object s, EventArgs e)
|
|
|
- {
|
|
|
- open = true;
|
|
|
- openEvent.Set();
|
|
|
- }
|
|
|
- void onClose(object s, EventArgs e)
|
|
|
+ try
|
|
|
{
|
|
|
- openEvent.Set();
|
|
|
- }
|
|
|
+ client = new WebSocket(address);
|
|
|
|
|
|
- client.Opened += onOpen;
|
|
|
- client.Closed += onClose;
|
|
|
+ var openEvent = new ManualResetEventSlim();
|
|
|
+ var open = false;
|
|
|
+ void onOpen(object s, EventArgs e)
|
|
|
+ {
|
|
|
+ open = true;
|
|
|
+ openEvent.Set();
|
|
|
+ }
|
|
|
+ void onClose(object s, EventArgs e)
|
|
|
+ {
|
|
|
+ openEvent.Set();
|
|
|
+ }
|
|
|
|
|
|
- client.Error += Client_Error;
|
|
|
- client.MessageReceived += Client_MessageReceived;
|
|
|
- client.DataReceived += Client_DataReceived;
|
|
|
- client.Open();
|
|
|
+ client.Opened += onOpen;
|
|
|
+ client.Closed += onClose;
|
|
|
|
|
|
- openEvent.Wait(ct);
|
|
|
+ client.Error += Client_Error;
|
|
|
+ client.MessageReceived += Client_MessageReceived;
|
|
|
+ client.DataReceived += Client_DataReceived;
|
|
|
+ client.Open();
|
|
|
|
|
|
- if (!open)
|
|
|
- {
|
|
|
- return null;
|
|
|
- }
|
|
|
+ openEvent.Wait(ct);
|
|
|
|
|
|
- client.Opened -= onOpen;
|
|
|
- client.Closed -= onClose;
|
|
|
+ if (!open)
|
|
|
+ {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
|
|
|
- client.Opened += Client_Opened;
|
|
|
- client.Closed += Client_Closed;
|
|
|
+ client.Opened -= onOpen;
|
|
|
+ client.Closed -= onClose;
|
|
|
+
|
|
|
+ client.Opened += Client_Opened;
|
|
|
+ client.Closed += Client_Closed;
|
|
|
|
|
|
- DoOpen();
|
|
|
- _host = url;
|
|
|
-
|
|
|
- // Time to wait before disconnect - the default meant that the client disconnected during debugging, since the ping would fail
|
|
|
- /*socket.WaitTime = TimeSpan.FromSeconds(20);
|
|
|
- socket.OnOpen -= Socket_OnOpen;
|
|
|
- socket.OnError -= Socket_OnError;
|
|
|
- socket.OnClose -= Socket_OnClose;
|
|
|
- socket.OnMessage -= Socket_OnMessage;
|
|
|
- socket.Connect();
|
|
|
- if (socket.ReadyState == WebSocketState.Open)
|
|
|
- {
|
|
|
DoOpen();
|
|
|
+ _host = url;
|
|
|
+
|
|
|
+ // Time to wait before disconnect - the default meant that the client disconnected during debugging, since the ping would fail
|
|
|
+ /*socket.WaitTime = TimeSpan.FromSeconds(20);
|
|
|
+ socket.OnOpen -= Socket_OnOpen;
|
|
|
+ socket.OnError -= Socket_OnError;
|
|
|
+ socket.OnClose -= Socket_OnClose;
|
|
|
+ socket.OnMessage -= Socket_OnMessage;
|
|
|
+ socket.Connect();
|
|
|
+ if (socket.ReadyState == WebSocketState.Open)
|
|
|
+ {
|
|
|
+ DoOpen();
|
|
|
|
|
|
- socket.OnOpen += Socket_OnOpen;
|
|
|
- socket.OnError += Socket_OnError;
|
|
|
- socket.OnClose += Socket_OnClose;
|
|
|
- socket.OnMessage += Socket_OnMessage;
|
|
|
+ socket.OnOpen += Socket_OnOpen;
|
|
|
+ socket.OnError += Socket_OnError;
|
|
|
+ socket.OnClose += Socket_OnClose;
|
|
|
+ socket.OnMessage += Socket_OnMessage;
|
|
|
|
|
|
- return socket;
|
|
|
- }*/
|
|
|
+ return socket;
|
|
|
+ }*/
|
|
|
+ }
|
|
|
+ catch (Exception e)
|
|
|
+ {
|
|
|
+ Console.WriteLine(e);
|
|
|
+ throw;
|
|
|
+ }
|
|
|
+
|
|
|
return client;
|
|
|
}
|
|
|
|