예제 #1
0
 /// <summary>
 /// 连接成功后调用
 /// </summary>
 /// <param name="isSuccess"></param>
 public virtual void OnConnect(bool isSuccess)
 {
     isConnect = isSuccess;
     SyncCall.Add(() =>
     {
         if (OnConnectCompleted != null)
         {
             OnConnectCompleted(this, new ConnectCommpletedArgs {
                 Success = isSuccess
             });
         }
     });
 }
예제 #2
0
 /// <summary>
 /// 接收到消息
 /// </summary>
 /// <param name="message"></param>
 public virtual void OnReceived(Message message)
 {
     if (message.Class == MessageClass.Ping)
     {
         #region Ping
         var  tickNow  = DateTime.Now.Ticks;
         long tickSend = 0;
         using (var mem = new MemoryStream(message.Content))
         {
             using (var br = new BinaryReader(mem))
             {
                 tickSend = br.ReadInt64();
             }
         }
         Delay = (tickNow - tickSend);
         SyncCall.Add(() =>
         {
             if (OnPingCompleted != null)
             {
                 OnPingCompleted(this, new PingCompletedArgs {
                     DelayTicks = Delay
                 });
             }
         });
         #endregion
     }
     else if (message.Class == MessageClass.Package)
     {
         var bufferPackage = MessageBufferPackage.ParseFromMessage(message);
         foreach (var m in bufferPackage.Messages)
         {
             OnReceived(m);
         }
     }
     else if (message.Class == MessageClass.Close)
     {
         this.Disconnect();
     }
     else
     {
         ReceivedBufferMessage(message);
     }
     if (UsedThread)
     {
         SendEvent.Set();
     }
 }