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