如何从服务器在WCF(广播你可以说)发送通知消息到所有客户端?(How can I send a n

2019-07-28 20:23发布

我想发送通知消息每秒钟从网上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);
    }
  }
  );
}

我很担心调用回调方法,客户端可能会关闭他的申请,但我处理它使用尝试捕捉,减少超时,发送并行广泛铸造,所以是足够了吗?

Answer 1:

你需要设置一个回调服务; 我写了一个简单的新手引导而回



Answer 2:

为了做到这一点,你需要创建和十个分量所有连接的客户端列表(一般的做法是FO这是创建登录和注销方法来创建和管理代表客户incuding他们CallbackContext对象的列表)。 然后,用System.Time.Timers,您可以通过连接的客户端列表循环和发送通知。

小费。 这种方法也可以作为保持活动或听到拍方法(如果这不是它的设计目的)加入方法可行从列表中删除的客户,如果服务不能回调发送给他们。



文章来源: How can I send a notification message from server to all clients in WCF (broadcast you can say)?