public Task Publish(ChannelEvent channelEvent) { Clients.Group(channelEvent.ChannelName).OnEvent(channelEvent.ChannelName, channelEvent); if (channelEvent.ChannelName != Constants.AdminChannel) { // Push this out on the admin channel // Clients.Group(Constants.AdminChannel).OnEvent(Constants.AdminChannel, channelEvent); } return(Task.FromResult(0)); }
public Task Publish(ChannelEvent channelEvent) { Clients.Group(channelEvent.ChannelName).OnEvent(channelEvent.ChannelName, channelEvent); if (channelEvent.ChannelName != Constants.AdminChannel) { // Push this out on the admin channel // Clients.Group(Constants.AdminChannel).OnEvent(Constants.AdminChannel, channelEvent); } return Task.FromResult(0); }
/// <summary> /// Публикует (отправляет) на клиент событие. При этом отправляет в оперделенную группу, если эта группа не администратора, /// то ему тоже группе администратора тоже отправляется это событие /// </summary> /// <param name="channelEvent"></param> /// <returns>Создает результат который говорит что всё завершилось удачно</returns> public Task Publish(ChannelEvent channelEvent) { Clients.Group(channelEvent.ChannelName).OnEvent(channelEvent.ChannelName, channelEvent); if (channelEvent.ChannelName != Constants.AdminChannel) { //Push this out on the admin channel //Если событие пришло не из группы админа, то мы публикуем помимо основной группы и в группу админа тоже Clients.Group(Constants.AdminChannel).OnEvent(Constants.AdminChannel, channelEvent); } //ВОЗВРАЩАЕТ РЕЗУЛЬТАТ С НАДПИСЬЮ ТОГО, ЧТО ВСЁ ЗАВЕРШИЛОСЬ УДАЧНО return(Task.FromResult(0)); }
public override Task OnConnected() { var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.connected", Data = new { Context.ConnectionId, } }; Publish(ev); return base.OnConnected(); }
public override Task OnDisconnected(bool stopCalled) { var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.disconnected", Data = new { Context.ConnectionId, } }; Publish(ev); return(base.OnDisconnected(stopCalled)); }
public override Task OnConnected() { var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.connected", Data = new { Context.ConnectionId, } }; Publish(ev); return(base.OnConnected()); }
public async Task Unsubscribe(string channel) { await Groups.Remove(Context.ConnectionId, channel); var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.unsubscribed", Data = new { Context.ConnectionId, ChannelName = channel } }; await Publish(ev); }
/// <summary> /// Отписывает клиента от какой-то группы /// </summary> /// <param name="channel">Имя группы от которого надо отписаться</param> public async Task Unsubscribe(string channel) { //Удаляет подключение из определенной групы await Groups.Remove(Context.ConnectionId, channel); var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.unsubscribed", Data = new { Context.ConnectionId, ChannelName = channel } }; await Publish(ev); }
//Ключевое слово async указывает, что метод или лямбда-выражение являются асинхронными. // // //Данный класс описывает отдельную задачу, которая запускается в отдельном потоке /// <summary> /// Выполняет подписку подключившегося клиента. То есть добавляет его в определенную вещательную группу /// </summary> /// <param name="channel">Name of channel. Имя группы к которой будет принадлежать подключившийся клиет </param> public async Task Subscribe(string channel) { //await применяется к задаче в асинхронных методах, чтобы приостановить в //ыполнение метода до тех пор, пока эта задача //не завершится. При этом выполнение потока, в котором //был вызван асинхронный метод, не прерывается. await Groups.Add(Context.ConnectionId, channel); var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.subscribed", Data = new { Context.ConnectionId, ChannelName = channel } }; await Publish(ev); }
public override Task OnDisconnected(bool stopCalled) { var ev = new ChannelEvent { ChannelName = Constants.AdminChannel, Name = "user.disconnected", Data = new { Context.ConnectionId, } }; Publish(ev); return base.OnDisconnected(stopCalled); }