我想每秒从网络tcp WCF服务向所有客户端发送通知消息, 您可以说广播吗?如何从服务器向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来处理它,减少超时并且并行地发送广播,那么足够了吗?
这篇文章很不错,但是我发现它发送的数据是连接到客户端的,这意味着如果一个客户端在发送系统的时候关闭了他的应用程序就会等到超时发生,这发生在我身上时,我应用了相同的代码,我该如何解决这个问题(使超时很小?) – 2009-06-17 14:16:52