В моем решении у меня есть 2 проекта: SignalRServer , WebClient , которые оба MVC приложение . На моем сервере я использовал SignalR 2 Hub , а в клиентском проекте я использовал библиотеку jquery SignalR для подключения к хаб-серверу, передавая URL-адрес размещенного сервера в качестве URL-адреса хаб-соединения. .
Все работает также, и клиент может получать сообщения с сервера.
Проблема: в клиентском проекте я добавил аутентификацию, и пользователи должны ввести свое имя пользователя и пароль, чтобы просмотреть страницу, сообщения которой будут смотреться. Теперь я хочу получить зарегистрированное имя пользователя, которое подключилось к SignalR Hub Server , и отправить соответствующие сообщения каждому пользователю, используя это имя пользователя.
Как узнать, какой пользователь подключился к серверу во время проверка подлинности обрабатывается в клиентском проекте, отделенном от серверного проекта?
JQuery клиентский концентратор:
var PbxHub = $.connection.pbxhub;
$.connection.hub.url = "http://localhost:10437/signalr";
$.connection.hub.logging = true;
$.connection.hub.start({
jsonp: true,
withCredentials: false
}).done(function () {
console.log('Hub is connected.');
});
$.connection.hub.disconnected(function () {
console.log('Hub is disconnected.');
setTimeout(function () {
$.connection.hub.start();
}, 1500); // Restart connection after 1500 miliseconds.
});
Запуск клиента:
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Home/Login"),
});
}
Запуск сервера:
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
var hubConfiguration = new HubConfiguration
{
EnableJavaScriptProxies = true,
EnableJSONP = true,
EnableDetailedErrors = true
};
map.UseCors(CorsOptions.AllowAll);
map.RunSignalR(hubConfiguration);
});
}
Ценится за любую идею.