У меня есть веб-сайт, который будет взаимодействовать с 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
?)