Как обновить веб-страницу после обновления таблицы базы данных Azure SQL - PullRequest
0 голосов
/ 14 февраля 2019

Я работаю над приложением webPage с использованием C # ASP.NET, оно получает данные из базы данных SQL Azure, как только я нажимаю кнопку отправки.

protected void BtnSubmit_Click(object sender, EventArgs e)
        {
                string connStr = "Server=*******";
                SqlConnection conn = new SqlConnection(connStr);
                conn.Open();

                string strQuery = "select **** from myTable";
                SqlCommand sqlcmd = new SqlCommand(strQuery, conn);
                Label1.Text = sqlcmd.ExecuteScalar().ToString();
                conn.close();
        }

Теперь я пытаюсь получить мой wabPagelabel.text обновляется автоматически с использованием последних загруженных записей в таблице базы данных Azure Sql, без использования управления часами, как мне этого добиться?

1 Ответ

0 голосов
/ 14 февраля 2019

Вот что вы можете сделать, функциональность довольно проста. Например, я использую один консольный клиент и одно веб-приложение.

Вот мой код сервера SignalR:

 class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:8081/";

            var server = new Server(url);
            server.MapHubs();
            
            server.Start();
            Console.WriteLine("SignalR server started at " + url);

            while (true)
            {
                ConsoleKeyInfo ki = Console.ReadKey(true);
                if (ki.Key == ConsoleKey.X)
                {
                    break;
                }
            }
        }

        public class CollectionHub : Hub
        {
            public void Subscribe(string groupName)
            {
                Groups.Add(Context.ConnectionId, groupName);
                Console.WriteLine("Subscribed to: " + collectionName);
            }

            public Task Unsubscribe(string groupName)
            {
                return Clients[groupName].leave(Context.ConnectionId);
            }

            public void Publish(string message, string groupName)
            {
                Clients[groupName].flush("SignalR Processed: " + message);
            }
        }

Для завершения прослушивания нам необходимо сделать следующее.

1) Создать концентраторное соединение с URL-адресом, где прослушивает сервер SignalR.

2) Создайте прокси-класс для вызова функций в CollectionHub, который мы создали на сервере.

3) Зарегистрируйте событие и обратный вызов, чтобы сервер мог вызывать клиента и уведомлять об обновлениях.Как вы можете, имя события - «Сброс», если вы помните, что сервер вызывает эту функцию в функции публикации, чтобы обновить сообщение для клиентов.

4) Запустите концентратор и дождитесь завершения соединения.

5) Мы можем вызвать любой открытый метод в объявленном в Hub, используя метод Invoke, передав имя функции и аргументы.

Ниже приведен пример кода для получения обновлений в веб-клиенте

 <script type="text/javascript">
           $(function () {
               var connection = $.hubConnection('http://localhost:8081/');
               proxy = connection.createProxy('collectionhub')
               connection.start()
                    .done(function () {
                        proxy.invoke('subscribe', 'Product');
                        $('#messages').append('<li>invoked subscribe</li>');
                    })
                    .fail(function () { alert("Could not Connect!"); });


               proxy.on('flush', function (msg) {
                   $('#messages').append('<li>' + msg + '</li>');
               });

               $("#broadcast").click(function () {
                   proxy.invoke('Publish', $("#dataToSend").val(), 'Product');
               });

           });
    </script>

Вы можете установить Javascript-клиент SignalR из Nuget, и он установит все необходимые js-файлы.

Дайте мне знать, если вам нужна дополнительная помощь.

...