用于与SignalR集线器进行对象通信的对象

时间:2013-11-19 17:28:37

标签: c# proxy signalr signalr-hub signalr.client

在我的应用程序中,我希望客户端JS代理对象与服务器上的相应.NET对象进行通信。我有许多不同类型的对象。每种类型都有自己的一套方法。

所以我需要的是一个JS对象到C# - 对象RPC通信。

我的第一个想法是通过Signal / R Hub实现这一点,并利用这个漂亮的自动生成RPC代理功能。但我不确定这是否可行。我知道集线器是短暂的,但我正在寻求SignalR的一些支持来做到这一点。

我想继续下面这样做:

  • 服务器:为每种对象类型定义一个C#接口。
  • 服务器:为每个实现适当接口的对象类型定义集线器类。
  • 服务器:为每个实现接口的对象类型定义一个类。

  • 客户端:通过网址检索代理。 url包含一个带有对象实例id

  • 的参数
  • 客户:调用代理的功能

  • 服务器:当在集线器中调用该函数时,我想以某种方式获取对象实例的id。 (也许来自连接对象?)有了这个id我想在字典中查找我的对象并调用apporpriate方法。

我知道一个解决方案可能是在每个方法中将对象id作为参数,但我想避免这种情况。

1 个答案:

答案 0 :(得分:0)

如果对象ID与SignalR连接一一对应,则可以使用Hub.Context.ConnectionId而不是将对象ID作为参数传递给每个方法。

Hub.Context还有其他有用的属性来访问请求Cookie和有效IPrincipal等内容。

http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#contextproperty