Deseo enviar un mensaje de notificación cada segundo desde el servicio de WCW de net tcp a todos los clientes, Transmisión que puede decir?¿Cómo puedo enviar un mensaje de notificación desde el servidor a todos los clientes en WCF (difusión que puede decir)?
Después de las respuestas votos
me escribió el siguiente método que va a enviar notificaciones (latido) 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 de llamar al método de devolución de llamada que el cliente pueda cerrar su aplicación , pero lo manejé usando la captura de prueba, disminuí el tiempo de espera y envié el lanzamiento amplio en paralelo, ¿es eso suficiente?
el artículo es muy bueno, pero encontré que envía los datos en serie a los clientes conectados, esto significa que si un cliente cerró su aplicación durante el envío el sistema esperará hasta que se agote el tiempo de espera, esto me sucede cuando apliqué el mismo código, ¿cómo puedo solucionar esto? (haga que el tiempo de espera sea muy pequeño?) –
Puede resolverlo ya sea, como usted dice, reduciendo el tiempo de espera para la llamada hacia atrás o, más sensatamente, poniendo el las devoluciones de llamada en subprocesos de trabajo en segundo plano, por lo que se ejecutan en paralelo. Fue solo una demostración :) – blowdart
Las respuestas no deben vincular a los recursos externos sin proporcionar suficientes detalles en la publicación. El enlace está muerto y ahora la respuesta es inútil. – MrZander