Я работаю над проектом signalR, проект включает веб-API в API. Я добавил свой класс концентратора, тогда я создал отдельный клиент javascript для работы с этим клиентом, через это я получил ошибку, сказав, что экзамен "Хаб не может быть разрешен" , и я не знаю, почему может помочь.
Код моего концентратора:
public class ExamHub : Hub
{
public void Send(string name , string message)
{
Clients.All.broadcast(name, message);
}
}
Клиент Javascript:
<html>
<head>
<meta name="viewport" content="width=device-width" />
<script src="https://code.jquery.com/jquery-2.2.4.min.js"
integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44="
crossorigin="anonymous"></script>
<script src="~/Scripts/jquery.signalR-2.2.2.js"></script>
<script src="http://localhost:51822/signalr/hubs"></script>
<title>SignalR</title>
</head>
<body>
<div>
</div>
<script type="text/javascript">
$(function () {
var exam = $.connection.examHub;
exam.client.broadcast = function (name, message) {
alert(name + "" + message);
}
$.connection.hub.start().done(function () {
exam.server.send("Alameer", "Hi");
});
});
</script>
</body>
</html>
Когда вы настраиваете signalr в api, вы настраиваете URL-адрес, который ваш клиент должен слушать. В приведенном ниже примере, если мой api - http://localhost: 51822, тогда URL, который мой клиент будет слушать, будет
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR("/signalr", new HubConfiguration());
}
}
}
Затем в клиентском проекте будет сконфигурировано это соединение javascript signalr так
<script type="text/javascript">
$(function () {
var hub = $.connection.myHub;
$.connection.hub.url = 'http://localhost:51822/signalr';
$.connection.hub.start();
});
</script>
Имейте в виду, что вам, вероятно, потребуется разрешить CORS в вашей среде разработчиков. Я бы не рекомендовал настраивать ваш проект, чтобы CORS разрешался на производстве, если это не одно из ваших требований. Также не включать в код концентратор, который вам нужно настроить. Эту информацию можно найти здесь
Вероятно, вы забыли включить сгенерированный прокси- signalr/hubs
. Попробуйте добавить эту строку в код javascript:
<script src="signalr/hubs"></script>