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

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

So what I need is a JS-object to C#-object RPC communication.

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

我想继续如下:

  • 服务器:为每种对象类型定义一个C#接口 .

  • 服务器:为每个实现适当接口的对象类型定义集线器类 .

  • 服务器:为每个实现接口的对象类型定义一个类 .

  • 客户端:通过url检索代理 . url包含一个带有对象实例id的参数

  • 客户端:调用代理的功能

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

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

回答(1)

2 years ago

如果对象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