我从JavaScript的发送的用户ID,而我想提出请求signalr如下:SignalR IUserIdProvider不被调用用于用户标识和的ConnectionId映射
var userId = "1";
var connection = $.hubConnection("/signalr", { useDefaultPath: false });
var notificationsHubProxy = connection.createHubProxy('NotificationsHub');
connection.qs = "userId=" + userId;
notificationsHubProxy.on('notify', function (notifications) {
notifyAll(notifications);
});
connection.start()
.done(function() {
notificationsHubProxy.invoke('getNotifications', "1,2,3");
})
.fail(function(reason) {
alert('signalr error');
});
下面是用于实施IUserIdProvider检索查询字符串并返回作为用户id类,我调试了,这个类和GetUserId方法没有被框架调用。
public class RealTimeNotificationsUserIdProvider : IUserIdProvider
{
public string GetUserId(IRequest request)
{
return request.QueryString["userId"];
}
}
这是我与signalR配置挂钩IUserId提供商启动类:
var userIdProvider = new RealTimeNotificationsUserIdProvider();
GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider),() => userIdProvider);
app.Map("/signalr", map =>
{
var hubConfiguration = new HubConfiguration
{
EnableDetailedErrors = true,
Resolver = dependencyResolver,
EnableJavaScriptProxies = false
};
map.RunSignalR(hubConfiguration);
});
现在,当我尝试通过访问Clients.User(用户ID)发送通知给特定用户的不工作:
var userId = "1";
Clients.User(userId).notify("test");
我在想什么?请帮忙。