Соединение WebSocket от javascript до C # WebSocketServer завершается неудачно для wss - PullRequest
0 голосов
/ 08 февраля 2019

У меня есть веб-сайт, который будет взаимодействовать с C # WebSocketServer (.Net Standard 2.0).

С моего веб-сайта я звоню new WebSocket("ws://ipAddress:port/?SomeData");

C # WebSocketServer запускает TCPListener и ожидаетклиенты (веб-сайт) и считывает данные из потока клиента:

TcpListener listener = new TcpListener(new IPEndPoint(this.IPAddress, this.Port));
listener.Start() 
TcpClient client = await listener.AcceptTcpClientAsync();

using (NetworkStream stream = client.GetStream())
{
    if (stream.DataAvailable)
    {
        byte[] bytes = new byte[client.Available];
        stream.Read(bytes, 0, bytes.Length);

        string data = Encoding.UTF8.GetString(bytes);
        Console.WriteLine("Data: " + data);
    }
}

Это работает нормально, пока не попытается использовать безопасное соединение и не позвонит с веб-сайта new WebSocket("wss://ipAddress:port/?SomeData");

Затем данные изПоток зашифрован и я не могу их расшифровать (использование SSlStream невозможно).

Поэтому я попытался использовать HttpListener вместо TcpListener:

HttpListener listener = new HttpListener();
listener.Prefixes.Clear();
listener.Prefixes.Add(string.Format("http://*:{0}/", this.PortHttp.ToString()));
listener.Prefixes.Add(string.Format("https://*:{0}/", this.PortHttps.ToString()));
listener.Start();

HttpListenerContext client = await listener.GetContextAsync();
HttpListenerWebSocketContext context = await client.AcceptWebSocketAsync(null);

Этодаже работает для небезопасных вызовов, но когда я пытаюсь подключиться с помощью wss, я теперь получаю сообщение об ошибке на своем веб-сайте: WebSocket connection to 'wss://ipAddress:port/?SomeData' failed: Error in connection establishment: net::ERR_CONNECTION_RESET

Что я делаю неправильно?И что я могу сделать, чтобы он работал для небезопасных и безопасных вызовов?

(я думал, что TcpListener было хорошим решением, но я не нашел способа шифрования данных - есть ли другой способ, кромеиспользуя SSLStream?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...