如何使用signalR向特定员工发送通知

时间:2014-10-02 08:12:29

标签: c# asp.net signalr

我正在创建一个crm,其中Jobs自动分配给员工,当创建工作时,应用程序会查找具有最大空闲时间的员工。我能够向所有员工广播通知,但我想知道如何向分配了工作的员工发送通知。就像facebook每个用户只收到他的通知一样。我在集线器类中使用此语句

   Clients.All.broadcastMessage( message);

3 个答案:

答案 0 :(得分:1)

您目前正在向我建议您使用Clients.User(userid)

的所有人广播您的邮件

获取当前登录用户string userName = HttpContext.Current.User.Identity.Name;

然后向特定用户发送通知,您可以拥有类似的内容。

Clients.User(userName).broadcastMessage(message);

答案 1 :(得分:0)

您必须根据connectionId识别用户。

这是一篇很好的博客文章,描述了这一点:

http://www.tugberkugurlu.com/archive/mapping-asp-net-signalr-connections-to-real-application-users

答案 2 :(得分:0)

3天前我正在努力解决这个问题,最后让它发挥作用。

假设您有一个名为YourHub的Hub类,您的javascript代码应如下所示

$(function () {
    var yourHub = $.connection.YourHub;
    yourHub.client.OnMessage = function ( message) {
        console.log(message):
    };
});

然后你需要在服务器上实现IUserIdProvider,它接收一个IRequest(应该有一个cookie或者你可以识别该人的东西),并实现方法

public string GetUserId(IRequest request)

然后就像Izzy告诉你使用Clients.User(userId).OnMessage(message) 其中userId是您在GetUserId上返回的ID,而OnMessage是您的javascript文件中的方法。 小心使用Clients.User(userId)而不是Clients.Client(userId)