SignalR - 从服务器代码调用消息

时间:2014-05-13 08:02:09

标签: javascript asp.net vb.net

一直在研究堆并没有取得进展:( 尝试在VS 2013中使用VB设置一个小型Web应用程序。 我已将所有SignalR资源添加到我的项目中。

每个登录的客户端在我的数据库中都有一个UserID。

我想从服务器端代码而不是客户端代码向某些UserID调用SignalR消息。首先,这可能吗? (可以使用ReverseAJAX,但我选择不使用它)

如果可能,我该如何设置SignalR Hub以允许我使用UserID发送消息?我不需要SQL的帮助,我可以自己做。

此外,我需要什么JavaScript来保留请求?我猜我在这段代码中的某个地方需要UserID。

谢谢你。

2 个答案:

答案 0 :(得分:1)

这很有可能。如果你看这里

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

您会在“单个用户组”中找到一个部分。这是版本2中可用于将消息发送到单个用户ID的机制。基本上,当建立连接时,您将用户ID添加到“组”,该组可以通过组名(同义词用户ID)访问,而不必担心自己将连接ID​​与用户ID的关系保持不变。唯一的限制是,如果同一用户建立的连接数超过1个,则该用户的所有设备都将位于同一个组中,因此会收到发送给它的任何消息......

还有另一节介绍如何在Web服务器上保留SignalR上下文的实例以向客户端发出呼叫(如何从Hub类外部调用客户端方法和管理组)

我确实读过一些有关SignalR团队创建用户ID方法的内容,但我已经使用上述方法取得了公平的成功,并且没有进一步研究。

希望这有帮助

答案 1 :(得分:1)

正如@Pepto所提到的,here描述了如何获取对集线器的引用,然后在服务器代码中使用它。

为特定用户调用客户端函数的一种简单方法是在集线器中使用Clients.User("Username")

Intellisense会告诉您User()想要一个ID作为参数,但是您应该传递用户的用户名,而不是他的ID。