Как я могу отправить уведомление с сервера всем клиентам в WCF (можно сказать, широковещательное)?

StackOverflow https://stackoverflow.com/questions/1006058

Вопрос

Я хочу отправлять уведомление каждую секунду из службы net tcp WCF всем клиентам, Широковещательно, вы можете сказать?

После полезных ответов

Я написал следующий метод, который будет отправлять уведомления (сердцебиение) всем подключенным пользователям

foreach (IHeartBeatCallback callback in subscribers)
{
  ThreadPool.QueueUserWorkItem(delegate(object state)
  {
    ICommunicationObject communicationCallback = (ICommunicationObject)callback;
    if (communicationCallback.State == CommunicationState.Opened)
    {
      try
      {
         callback.OnSendHeartBeat(_heartbeatInfo.message,    _heartbeatInfo.marketstart,_heartbeatInfo.marketend, _heartbeatInfo.isrunning,   DateTime.Now);
      }
      catch (CommunicationObjectAbortedException)
      {
        Logger.Log(LogType.Info, "BroadCast", "User aborted");
        communicationCallback.Abort();
      }
      catch (TimeoutException)
      {
       Logger.Log(LogType.Info, "BroadCast", "User timeout");
       communicationCallback.Abort();
      }
      catch (Exception ex)
      {
        Logger.Log(LogType.Error, "BroadCast", "Exception " + ex.Message + "\n" +  ex.StackTrace);
        communicationCallback.Abort();
      }

    }
    else
    {
      DeletionList.Add(callback);
    }
  }
  );
}

Я беспокоюсь о вызове метода обратного вызова, поскольку клиент может закрыть свое приложение, но я обработал это с помощью try catch, уменьшил время ожидания и отправил широкое приведение параллельно, так достаточно ли этого?

Это было полезно?

Решение

Вам необходимо настроить службу обратного вызова; Я написал простое руководство для начинающих a вернувшись

Другие советы

Чтобы сделать это, вам необходимо создать и поддерживать список всех подключенных клиентов (общей практикой для этого является создание методов входа и выхода из системы для создания списка объектов, представляющих ваших клиентов, включая их CallbackContext, и управления им).Затем с помощью таймеров System.Time.вы можете просмотреть список подключенных клиентов и отправить уведомление.

Чаевые.этот метод также может действовать как метод Keep-Alive или Hear-Beat (если это не является его целью по дизайну), добавляя возможность удаления клиентов из вашего списка, если служба не может отправить им обратный вызов.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top