Сообщение SignalR от контроллера для просмотра при возникновении события

1

Я новичок в SignalR и пытаюсь реализовать уведомление, когда какое-либо событие запускается из API.

Что пробовали:

Hub:

public class NotificationHub : Hub
{        
    private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<NotificationHub>();

    public static void Send( string content)
    {
        hubContext.Clients.All.addMessage(content);
    }
}

контроллер:

//static event from external API
public static void onTick(Tick TickData)
{
    if(TickData.InstrumentToken == buy.InstrumentToken)
    {                   
        NotificationHub.Send(TickData.Bid);   
    } 
}

Что я должен использовать в представлении для отображения сообщения, которое запускается при условии?

Просмотр, попробовал:

$(document).ready(function () {
    var conn = $.connection.NotificationHub;
    conn.client.addMessage = function (message) {
        alert(message);
    };

});

Есть ли что-то еще, чтобы заставить это работать?

Редактировать:

Эшли ответ приблизил меня, и пару вещей также пропало, как показано ниже,

  • connection.NotificationHub should be connection.notificationHub '

  • порядок ссылок на файлы js файлов

1 jquery-1.10.2.min.js
2 jquery.signalR-2.1.0.min.js
3 сигнала/концентраторы

Но теперь, выполняя его, входит в.fail(function(), а консоль показывает ошибку, http://127.0.0.1:8080/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%7B%22name%22%3A%22notificationhub % 22% 7D% 5D & _ = 1515664348026 Не удалось загрузить ресурс: net :: ERR_CONNECTION_REFUSE

Пожалуйста, порекомендуйте. Заранее спасибо.

  • 0
    Вам просто нужно запустить соединение с концентратором, покажет в ответе, дайте мне две секунды.
  • 0
    @AshleyMedway спасибо, брат.
Теги:
asp.net-mvc
signalr

1 ответ

0

Убедитесь, что вы включили источник концентраторов SignalR:

<script type="text/javascript" src="~/signalr/hubs"></script>

Вы просто не запустили соединение для SignalR, добавьте это:

$.connection.hub.start().done(function() {
    //connection has started :-)
}).fail(function() {
    //connection has failed to start :-(
});

Используя ваш пример, он будет выглядеть так:

$(document).ready(function () {
    var conn = $.connection.NotificationHub;
    conn.client.addMessage = function (message) {
        alert(message);
    };

    $.connection.hub.start().done(function() {
        //connection has started :-)
        alert("connected");
    }).fail(function() {
        //connection has failed to start :-(
        alert("failed");
    });
});
  • 0
    спасибо приятель .. дай мне попробовать
  • 0
    все то же самое ... может быть, что-то глупое упущено с моей стороны?
Показать ещё 5 комментариев

Ещё вопросы

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