/// <summary>
 /// Reads PseudoConsole output and copies it to the terminal's standard out.
 /// </summary>
 /// <param name="outputReadSide">the "read" side of the pseudo console output pipe</param>
 private static void CopyPipeToOutput(SafeFileHandle outputReadSide, MeshCentralTunnel tunnel)
 {
     byte[] buffer = new byte[1024];
     using (var pseudoConsoleOutput = new FileStream(outputReadSide, FileAccess.Read))
     {
         while (true)
         {
             int len = 0;
             try { len = pseudoConsoleOutput.Read(buffer, 0, buffer.Length); } catch (Exception) { }
             if (len == 0)
             {
                 tunnel.disconnect(); return;
             }
             if (tunnel.WebSocket != null)
             {
                 try { tunnel.WebSocket.SendBinary(buffer, 0, len); } catch (Exception) { }
             }
         }
     }
 }