一直在研究堆并没有取得进展:( 尝试在VS 2013中使用VB设置一个小型Web应用程序。 我已将所有SignalR资源添加到我的项目中。
每个登录的客户端在我的数据库中都有一个UserID。
我想从服务器端代码而不是客户端代码向某些UserID调用SignalR消息。首先,这可能吗? (可以使用ReverseAJAX,但我选择不使用它)
如果可能,我该如何设置SignalR Hub以允许我使用UserID发送消息?我不需要SQL的帮助,我可以自己做。
此外,我需要什么JavaScript来保留请求?我猜我在这段代码中的某个地方需要UserID。
谢谢你。
答案 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。