是否可以将signalR方法配置为仅从服务器调用?

时间:2015-01-28 16:06:12

标签: c# asp.net signalr

我有一个客户端应用程序(C#桌面应用程序),它连接到带有signalR的服务器端应用程序(asp.net mvc应用程序),现在我想当一个客户从网站购买我的一个产品时,销售报告给客户端应用程序。 但出于安全考虑,我认为仅从服务器端限制呼叫“我的signalR记者方法”的好方法!但我不知道我该怎么做?

1 个答案:

答案 0 :(得分:0)

您想要做的是告知用户产品已更新

首先获取上下文,

var context = GlobalHost.ConnectionManager.GetHubContext<ProductHub>()

然后,您可以通过不同方式更新客户端,所有客户端

context.Clients.All.updateProduct(product);

特定客户端(连接ID)

context.Clients.Client(id).updateProduct(product)

用户ID

context.Clients.User(userId).updateProduct(product)

确保从您的域逻辑中抽象Hub上下文,这是不好的做法,它们之间有很高的耦合。

您也可以使用一个为您抽象的库,我已经创建了这样的库,我认为它将满足您的需求,您可以使用任何类型的事件聚合器或消息总线,之后您就可以从您的域中调用总线像

这样的方法
eventAggregator.Publish(new ProductUpdated(product));

我的图书馆将启动并向客户提供更新。看这里

http://andersmalmgren.com/2014/05/27/client-server-event-aggregation-with-signalr/