Вызов метода клиента SignalR при запуске

Я хочу вызвать метод на стороне клиента из моего концентратора SignalR только один раз, когда клиент впервые загружает веб-страницу. Как мне это сделать?


person Josh B    schedule 25.07.2016    source источник


Ответы (1)


В вашем классе BlahBlahHub у вас есть доступ ко всем методам подключения, которые вы делаете на клиенте. Подсказка: посмотрите на базовый класс Hub.

С учетом сказанного, вот как будет выглядеть код:

Центр

[HubName("messageHub")]
    public class MessageHub : Hub
    {
        public override Task OnConnected()
        {
            Clients.Caller.alertUser(88);

            return base.OnConnected();
        }
    }

Клиент

var sender = $.connection.messageHub;

$.connection.hub.start().done(function () {

}).fail(function (reason) {
    console.log("SignalR connection failed: " + reason);
});

sender.client.alertUser = function (test) {
    alert(test);
};
person Mark C.    schedule 25.07.2016
comment
public override Task OnConnected() будет вызываться только при первоначальном подключении пользователя? - person Josh B; 25.07.2016
comment
Что вы имеете в виду под «изначально» соединяется? А код пробовали? Подходит ли это для вашего сценария? - person Mark C.; 25.07.2016
comment
Итак, есть два способа интерпретировать ваш запрос. Когда пользователь устанавливает подключение к концентратору SignalR или только когда к концентратору подключаются новые пользователи (то есть пользователи, которые никогда раньше не подключались к концентратору). В этом случае вам, вероятно, понадобится способ интеграции с Redis/Service Bus/SQL Server для идентификации пользовательских подключений. - person Mark C.; 25.07.2016
comment
Я имел в виду, что когда пользователь устанавливает соединение с концентратором SignalR, я разобрался, спасибо всем. - person Josh B; 26.07.2016