信号R用于通知单个认证用户

时间:2015-09-25 06:58:58

标签: asp.net signalr

以下是我想用信号R实现的场景。

如果正在发送电子邮件,则会显示消息 示例:“发送电子邮件..”

完成电子邮件发送后,将向同一用户显示另一条消息,说明
示例:“电子邮件已成功发送。”

我将如何使用Signal R实现此目的并仅将通知发送给一位用户。

阅读说使用连接ID的帖子,但这不会改变修复 我想仅为授权用户执行此操作,或者我们可以使用静态用户ID。

1 个答案:

答案 0 :(得分:1)

我看到了两种不同的解决方案,有两种不同的解决方案。服务器跟踪属于特定用户的哪个connectionId。或者客户端让服务器知道要使用哪个connectionId。

选项1:服务器知道如何将用户映射到connectionId(s)

首先,您需要将每个用户映射到他们拥有的connectionId。请记住,用户可以拥有多个connectionId,因为他/她可以在多个选项卡或浏览器中登录。在服务器上很难区分连接,因此当用户发送电子邮件时,最容易通知属于该用户的所有连接。

有几种方法可以跟踪用户的connectionIds。这是一个很好的walk through。在您的情况下,我认为UserID提供程序选项非常适合,因为它只是想要向当前用户发送更新,因此易于实现且足够。

选项2:客户端通知connectionId上的服务器使用

另一种方法可能是在对服务器的调用中包含connectionId。这样,服务器就知道要报告哪个连接。您可以使用以下命令在Javascript中获取connectionId(如this answer中所述)

var c_id = $.connection.hub.id

希望这有帮助!