所以我熟悉SignalR,关于从推送到javascript客户端的MVC站点项目中的中心进行的客户端/服务器通信。它是一种非常简单的服务器到客户端通信方法。
我的问题是,我有一个更复杂的架构。 MVC5 UI,用于调用所有计算和业务逻辑正在发生的WCF服务。
我的问题是,我有一个MVC视图,它是一个信息表。一列包含框中的#项。我希望每次从框中删除或添加某些内容时更新视图。但是,添加和删除项目不是通过UI完成的,而是通过调用我们的WCF服务的外部进程完成的。我们在服务中进行一些计算,然后更新框中的项目计数并将其保存到DB。我们希望,在保存到DB时也能够调用SignalR集线器并让它通知所有客户端计数已增加,这反过来将更新视图上的表。可以这样做吗?您可以从WCF服务调用MVC应用程序中的集线器吗?
答案 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>