концентратор не может быть решен в SignalR

1

Я работаю над проектом 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
signalr-hub

2 ответа

1

Когда вы настраиваете 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 разрешался на производстве, если это не одно из ваших требований. Также не включать в код концентратор, который вам нужно настроить. Эту информацию можно найти здесь

0

Вероятно, вы забыли включить сгенерированный прокси- signalr/hubs. Попробуйте добавить эту строку в код javascript:

<script src="signalr/hubs"></script>
  • 0
    Нет, это не было проблемой, прокси уже включал проблему в подключенном концентраторе, я забыл правильно открыть соединение, кроме нескольких изменений в global.asax $ .connection.hub.url = " localhost: 51822 / Сигнализатор ". Но большое спасибо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню