根据我读过的文档,为了向客户发送消息,我只需要打电话:
var hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
hubContext.Clients.All.foo(msg);
所以... Hub类需要任何方法吗?如果没有,那么我所拥有的只是一个空类:
public class MyHub : Hub
{
}
这似乎是一个毫无意义的设置。我是否错误地实施了这个?因为在集线器类中使用方法更有意义,然后调用这些方法向客户端发送消息。
此外,在集线器本身,我可以访问Context.connectionId,这样我就可以获取请求者的连接ID,然后阻止消息被触发到该客户端....如果Hub不应该有方法,那么有没有办法访问请求者的连接ID?
答案 0 :(得分:0)
是的,你需要一个空的HUB类声明,因为 - 它实际上只是JS客户端和控制器之间的代理,所以它可能是空的,因为所有方法都是通过Clients动态变量调用的。
我的意思是没有这个,你可以工作,但你必须为此编写JS。以下链接对此进行了简要说明。
有关详细信息,请参阅此链接 - http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#genproxy