Подключите защищенный веб-сокет JS к серверу веб-сокетов C # (Fleck) - PullRequest
0 голосов
/ 28 мая 2019

У меня есть API в C # (asp.net), в котором я использую этот сервер веб-сокетов, используя fleck:

SocketService.start();

            SocketService.server.Start(socket =>
            {
                socket.OnOpen = () =>
                {
                    SocketService.Connessione(socket);
                };
                socket.OnClose = () =>
                {
                    SocketService.Disconnesione(socket);
                };
                socket.OnMessage = message =>
                {
                    SocketService.Messaggio(message, socket);
                };
            });

Это SocketService.Start ():

public static void start()
    {
        server = new WebSocketServer($"wss://{GetLocalIPAddress()}:{"4450"}/BNS/");
    }

Я пытался с простой страницей HTML / JS, используя небезопасный ws, и она работала нормально.

Затем я попытался в своей основной программе запустить ее по протоколу HTTPS, поэтому при использовании небезопасного ws-хрома мне сказали вместо этого использовать wss.

Так что я меняю свой ws-сервер на wss, но тогда он ничего не делает, он выдает ошибку тайм-аута.

Это код JS:

var start = function () {
        var wsImpl = window.WebSocket || window.MozWebSocket;
        var form = document.getElementById('sendForm');
        var input = document.getElementById('sendText');

        alert("Connessione...");

        // create a new websocket and connect
        window.ws = new wsImpl('@Percorsi.IndirizzoSocket');

        alert("conn");

        // when the connection is established, this method is called
            ws.onopen = function () {
                alert("Connessione aperta");
                 var openJson = {
                    "Id": "@Model.accountCorrente.Id",
                    "type": "Identificazione"
                 };

                alert("send");
                ws.send(stringify(openJson));
            };
            // when the connection is closed, this method is called
            ws.onclose = function () {
                alert("Connessione chiusa");
            }
            // when data is comming from the server, this metod is called
            ws.onmessage = function (val) {
                if (confirm("Hai ricevuto un nuovo messaggio!\nPremi ok per visualizzarlo.")) {
                    window.location("/Annunci/Chat/" + val);
                } else { }
            };

    }

Я не могу понять, как заставить это работать.

Заранее спасибо за помощь!

1 Ответ

0 голосов
/ 29 мая 2019

Похоже, вы не устанавливаете сертификат сервера для использования под WS по TLS (не путать с HTTPS, который является HTTP по TLS).Если вы увидите пример на веб-странице fleck , вы поймете, что вам нужно установить сертификат:

server.Certificate = new X509Certificate2("MyCert.pfx"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...