【问题标题】:SignalR notification never reload the pageSignalR 通知从不重新加载页面
【发布时间】:2022-06-14 13:27:53
【问题描述】:

我使用 signalR 来管理数据库更改,当它发生时,我想将页面更新给其他用户,以便他们看到更改。但是到目前为止我所做的总是加载,这里是代码:

索引

@section scripts{  
    <script src="~/Scripts/jquery.signalR-2.4.3.min.js"></script>  
    <script src="/signalr/hubs"></script>  
    <script type="text/javascript">  
        $(function () {  
            var hubNotify = $.connection.Connection4Hub;  
  
            $.connection.hub.start().done(function () {  
                getAll();
            });  
  
            hubNotify.client.GetUpdateData = function () {  
                getAll();
            };
        });  
                          
        function getAll() {  
            var model = $('#dataModel');  
            $.ajax({  
                url: '/Manage/GetUpdateData',  
                contentType: 'application/html ; charset:utf-8',  
                type: 'GET',  
                dataType: 'html',  
                success: function(result) { model.empty().append(result); }  
            });                           
            location.reload();
        }  
    </script>  
}      

Connect4Hub

public class Connect4Hub : Hub
    {
        public static void BroadcastData()
        {
            IHubContext context = GlobalHost.ConnectionManager.GetHubContext<Connect4Hub>();
            context.Clients.All.GetUpdateData();
        }
    }

管理

public ActionResult GetUpdateData()
        {
            return PartialView("Partial_Index", db.Matches.ToList());
        }

更新

我发现下面的方法永远不会调用,现在页面永远不会刷新

hubNotify.client.GetUpdateData = function () {  
                getAll();
            };

【问题讨论】:

  • 如果它是一个新数据库,没有相关数据,你可以删除它并应用你的迁移。
  • @AchoVasilev 我如何应用我的迁移?
  • 你试过这个解决方案了吗?另外,这是什么版本的EF? stackoverflow.com/questions/26305273/…
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 你为什么用location.reload();

标签: c# asp.net-mvc database entity-framework signalr


【解决方案1】:

SignalR 集线器 API 使您能够从服务器到连接的客户端以及从客户端到服务器进行远程过程调用 (RPC)。在服务器代码中,您定义可以被客户端调用的方法,然后调用在客户端上运行的方法。

在客户端代码中,您定义可以从服务器调用的方法,并调用在服务器上运行的方法。 SignalR 为您处理所有客户端到服务器的管道。客户端只能调用集线器继承的方法。

调用在服务器上运行的BroadcastData 方法:

hubNotify.client.BroadcastData = function () {  
                                        getAll();
                                 };

参考:Link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 1970-01-01
    • 2013-10-26
    • 1970-01-01
    • 2019-07-20
    相关资源
    最近更新 更多