3

Recently, we have introduced SignalR into our project and hoping use its features. Currently SignalR is used only for showing progress bar on a couple of webpages on the client side for long running processes on the server. Could anyone help me with implementation of the SignalR and its ramifications?

  1. .Net Framework Standard MVC application at at a time more than 3000 users connected to the webapp in Microsoft Azure hosted site.
  2. SignalR is loaded and a connectionID is ($.connection.hub.start().done(function ().....) acquired in the _Layout.chtml. This is because, if the user may open different features in the webapp on different tabs and the these tabs may happen to have progress bars in it. So a unique connection ID on each Tab opened will help the SignalR to process the response.
  3. I suspect a potential problem here for the page load performance and other unknown issues can be triggered because the layout page is opening a new connectionID each time the pages are loaded or refreshed.
  4. Any other standard solution welcome if this is problematic.

Thanks for your help.

_Layout.chtml

  <script src="~/Scripts/bootstrap.min.js"></script>
    <script src="~/Scripts/ProgressBarHelper.js" type="text/javascript"></script>
    <script src="~/Scripts/jquery.signalR-2.4.2.min.js" type="text/javascript"></script>
    <script src="/signalr/hubs"></script>
    <script type="text/javascript">
    var connectionId = null;

    $(function () {
        // Reference the auto-generated proxy for the hub.
        var progress = $.connection.progressHub;
        //console.log(progress);

        // Create a function that the hub can call back to display messages.
        progress.client.AddProgress = function (message, percentage, reportmsg, showProgressReport, autoClose) {


            if (CommonProgressBar.IsVisible() == false)
                popupProgressBar.Show();

            CommonProgressBar.SetPosition(percentage);
            $('#popupProgressMessageText').text(message); //+ 'for ' + connectionId);
            if (percentage == "100") {

                if (autoClose == true) {
                    popupProgressReportText.SetText("Report");
                    popupProgressBar.Hide();
                }
                else {
                    popupProgressCloseButton.SetEnabled(true);
                }
            }
            else {
                if (autoClose == true) {
                    popupProgressCloseButton.SetEnabled(false);
                }
            }
            var rptmsg = popupProgressReportText.GetText();  // $('#popupProgressReportText').GetText();
            if (reportmsg != null && reportmsg != "") {
                if (rptmsg != null && rptmsg != "") {
                    popupProgressReportText.SetText(rptmsg + "\r\n" + reportmsg);
                }
                else {
                    popupProgressReportText.SetText(rptmsg);
                }
            }
        };

        $.connection.hub.start().done(function () {
            connectionId = $.connection.hub.id;

            console.log(connectionId);
        });

    });

</script>

0 Answers0