2014-05-13 92 views
0

一直在研究堆和毫无进展:( 试图建立使用VB一个小的Web应用程序在2013年VS我 添加完所有SignalR资源,我的项目SignalR - 从服务器代码调用消息

在客户端每一个记录在我的数据库中的用户名。

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

如果可能的话,我怎么去安博t设置SignalR Hub以允许我使用UserID发送消息?我不需要SQL的帮助,我可以做到这一点。

此外,JavaScript的是什么,我需要坚持的要求?我猜我会在这段代码中的某处需要用户ID。

感谢堆。

+0

看到这个样品。你可以改变它来使用你的userid,而不是http://techbrij.com/database-change-notifications-asp-net-signalr-sqldependency – Zaki

+0

这可能也有帮助,这是一个类似的问题,我有什么:http:// stackoverflow .com/questions/16459994/update-ui-with-signalr-and-knockout-when-manually-updates -db – christiandev

+0

感谢您的回复,但我没有看到我可以使用我的用户名的位置。 当数据库更新时,我不需要触发代码。我只需要使用UserID数据库字段将SR消息发送到该ID的客户端。 – user3173098

回答

1

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

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

,你会发现“单用户组”一节。这是版本2中向单个用户ID发送消息的机制。本质上讲,当建立了连接,你不必担心坚持连接ID的关系,一个用户ID自己添加的用户ID可以通过组名(SYN。用户ID)来访问“组”。唯一的限制是,如果超过1个连接由相同的用户建立的,与该用户的所有设备将在同一组中,并因此将接收发送给它的任何消息...

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

我没有读过有关SignalR团队创建User Id方法的内容但我已经用上述方法取得了公平的成功,并且没有深入研究。

希望这有助于

+0

谢谢,我会看看这个。 – user3173098

+0

还请记住,您不必从脚本发送任何特别的东西。如果您的.NET代码已经过“身份验证”并直接从ASP.NET主体中提取用户名,则可以在您的.NET代码中摘录该用户。很容易让你开始滚动= D – Pepto

1

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

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

智能感知会告诉你,User()想要一个ID作为参数,但是你应该传递用户的用户名,而你想调用的用户的用户名不是他的ID。

+0

嘿,我还没有读过这篇文章,但在你的文章中,你说用户名应该使用不是ID?我很困惑你为什么这么说。 UserID始终是唯一的,但用户名不一定是唯一的。干杯。 – user3173098

+0

这只是中心上的默认UserID提供程序的行为,因为用户的用户名可在请求的“IPrincipal.Identity.Name”上随时获得。见http://www.asp.net/signalr/overview/signalr-20/hubs-api/mapping-users-to-connections#IUserIdProvider既然你不能有两个用户使用相同的用户名,这种识别用户的方式比查询数据库的ID更有效。 – Tobias

+0

不够公平,谢谢解释。我对这篇大文章进行了详细的介绍,它非常令人难以置信,因为我首先必须弄清楚我需要哪些代码,然后将所有C#转换为VB。 – user3173098

相关问题