Если остановите веб-сайт по умолчанию, по-прежнему получите ответ в клиенте SignalR - PullRequest
0 голосов
/ 27 июня 2019

Мы используем Windows server 2016. У нас есть клиент / веб-приложение, чтобы проверить, работает ли сервер (не остановлен) и, соответственно, отображает кнопку, как подключенную на странице веб-приложения / клиента.

Наш API-интерфейс signalR размещен каквеб-сайт по умолчанию на сервере iis, если мы остановим его, то все равно получим ответ от сервера signalR API.

Примечание: он работает только тогда, когда мы останавливаем весь сервер iss или создаем отдельное веб-приложение, а не веб-сайт по умолчанию.

<input type="text" id="msg" value=" " />
    <input type="button" id="send" value="send" />
    <div id="message">
    </div>
    <script src="Scripts/jquery-1.8.3.min.js"></script>
    <script src="Scripts/jquery.signalR-1.1.3.min.js"></script>    
    <script>

        var connection = $.hubConnection('http://websitename/WebApi/signalr');
        //connection.logging = true;

        var proxy = connection.createHubProxy('SignalRHub');
        console.log(connection);
        console.log(proxy);

        connection.stateChanged(function (change) {
            console.log(change);
            console.log($.signalR.connectionState);
            if (change.newState === $.signalR.connectionState.reconnecting) {
                console.log("liveFeed is reconnecting!");
            }
            else if (change.newState === $.signalR.connectionState.connected) {
                console.log("liveFeed is connected!");
                connection.start().done(function (data) {
                    console.log('Now connected ', data);
                    proxy.invoke('GetRealTime');
                }).fail(function (er) {
                    console.log(er);
                });
            }
            while (change.newState === $.signalR.connectionState.disconnected) {
                console.log("in while loop")
                connection.start().done(function (data) {
                    console.log('Now connected ', data);
                    proxy.invoke('GetRealTime');
                }).fail(function (er) {
                    console.log(er);
                });
            }
        });

        proxy.on('setRealTime', function (obj) {
            var text = $('#message').html();
            $('#message').html(JSON.stringify(obj));
        });

        connection.disconnected(function (data) {
            console.log(data);
            alert('Server has disconnected');
        });

        connection.start().done(function (data) {
            console.log('Now connected ', data);
            proxy.invoke('GetRealTime');
        }).fail(function (er) {
            console.log(er);
        });


    </script>

1 Ответ

0 голосов
/ 27 июня 2019

Останавливаете ли вы пул приложений, когда останавливаете веб-сайт?Остановка пула приложений (не всех IIS, что означает, что служба W3SVC все еще работает, другие сайты могут работать и т. Д.) Приведет к отключению всего кода на стороне сервера (SignalR и т. Д.).Только остановка вашего сайта по-прежнему оставит SignalR запущенным в пуле приложений.

Если вы используете пул приложений по умолчанию для всех своих сайтов, разделите их.Остановите только свой веб-сайт SignalR и пул приложений.Вы должны увидеть разницу, когда ваш клиент обнаружит изменение состояния соединения.

...