SignalR WCF服务到MVC5客户端。可能吗?

时间:2017-05-08 20:41:41

标签: wcf signalr asp.net-mvc-5

所以我熟悉SignalR,关于从推送到javascript客户端的MVC站点项目中的中心进行的客户端/服务器通信。它是一种非常简单的服务器到客户端通信方法。

我的问题是,我有一个更复杂的架构。 MVC5 UI,用于调用所有计算和业务逻辑正在发生的WCF服务。

我的问题是,我有一个MVC视图,它是一个信息表。一列包含框中的#项。我希望每次从框中删除或添加某些内容时更新视图。但是,添加和删除项目不是通过UI完成的,而是通过调用我们的WCF服务的外部进程完成的。我们在服务中进行一些计算,然后更新框中的项目计数并将其保存到DB。我们希望,在保存到DB时也能够调用SignalR集线器并让它通知所有客户端计数已增加,这反过来将更新视图上的表。可以这样做吗?您可以从WCF服务调用MVC应用程序中的集线器吗?

2 个答案:

答案 0 :(得分:0)

  

您是否可以从WCF调用MVC应用程序中的集线器   服务?

是的,您可以创建Duplex Service。在回调操作(Duplex Service)中,服务还可以调用客户端中的某些功能。客户端上的此功能用于调用SignalR Hub方法以通知您的客户。

查看以下示例:

http://www.c-sharpcorner.com/uploadfile/dhananjaycoder/a-simple-duplex-service-in-wcf/

https://msdn.microsoft.com/en-us/library/ms752216(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/ms731184(v=vs.110).aspx

答案 1 :(得分:0)

你可以, 当你有一些变化,呼叫集线器,集线器扩展到客户端,然后客户端回调刷新: 客户           $(function(){

        var notifications = $.connection.pubsHub;

        notifications.client.alertms = function () {
            //if (ms === "pubs")
                getAllMessages()
        };
        // Start the connection.
        $.connection.hub.start().done(function () {
            //alert("connection started")               
            getAllMessages();
        }).fail(function (e) {
            alert(e);
        });
    });


    function getAllMessages() {

        $.post('@(Url.Action("GetMessages", "Home", null, Request.Url.Scheme))')
            .done(function (response) {
                $("#messagesTable").html(response)

            });
    };
</script>