Pregunta

Quiero enviar un mensaje de notificación cada segundo desde el servicio net tcp WCF a todos los clientes, ¿Transmisión que puedes decir?

Después de las respuestas útiles

Escribí el siguiente método que enviará notificaciones (latidos) a todos los usuarios conectados

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);
    }
  }
  );
}

Me preocupa que se llame al método de devolución de llamada ya que el cliente puede cerrar su aplicación, pero lo manejé usando el catch catch, disminuí el tiempo de espera y envié la transmisión en paralelo, ¿es eso suficiente?

¿Fue útil?

Solución

Tendrá que configurar un servicio de devolución de llamada; Escribí una guía simple para principiantes a Hace tiempo

Otros consejos

Para hacer eso, necesita crear y mantener una lista de todos los clientes conectados (la práctica general para esto es crear los métodos LogIn y LogOut para crear y administrar una lista de objetos que representan a sus clientes incluyendo su CallbackContext). Luego, con un System.Time.Timers, puede recorrer la lista de clientes conectados y enviar la notificación.

Sugerencia. este método también podría actuar como método Keep-Alive o Hear-Beat (si no es su propósito por diseño) agregando la posibilidad de eliminar clientes de su lista si el servicio no puede enviarles la devolución de llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top