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