Example #1
0
        public static async Task SendMessage(WSResponseMsgID msgId, int roleCount, byte[] data)
        {
            MsgQueueList msg    = new MsgQueueList();
            var          roleId = LogicServer.User.role.Id;

            msg.MsgType   = msgId;
            msg.RoleCount = roleCount;

            msg.Roles.Add(await SidRoleIdDataHelper.Instance.GetSidByRoleIdAsync(roleId));
            msg.Data = await Make(msgId, data);

            switch (msg.RoleCount)
            {
            case 1:     //一人
                await gate.SendOne(msg);

                break;

            case 0:     //全体
                await gate.SendAll(msg);

                break;

            default:
                break;
            }
        }
Example #2
0
 public static void SendMsgToSignleClient(MsgQueueList msg)
 {
     try
     {
         var data = msg.Data;
         if (msg == null)
         {
             return;
         }
         if (msg.Roles.Any())
         {
             foreach (var item in msg.Roles)
             {
                 var session = SessionPool.Instance.GetSid(item);
                 //  var sid = this._ws.GetSessionByID(item);
                 if (session != null)
                 {
                     if (session.Connected)
                     {
                         session.Send(data, 0, data.Length);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         //TODO 日志
         throw ex;
     }
 }
Example #3
0
 public static void SendMsgToAllClients(MsgQueueList msg)
 {
     try
     {
         var data     = msg.Data;
         var sessions = SessionPool.Instance.GetAll();
         if (sessions != null)
         {
             foreach (var sid in sessions.Values)
             {
                 if (sid != null)
                 {
                     if (sid.Connected)
                     {
                         sid.Send(data, 0, data.Length);
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         //TODO 日志
         throw ex;
     }
 }
Example #4
0
 public static void SendMsgToClients(MsgQueueList msg)
 {
     try
     {
         var data     = msg.Data;
         var sessions = SessionPool.Instance.GetAll();
         if (sessions == null)
         {
             return;
         }
         if (msg.Roles.Any())
         {
             foreach (var session in sessions.Values)
             {
                 if (session != null)
                 {
                     if (session.Connected)
                     {
                         foreach (var roleSession in msg.Roles)
                         {
                             if (roleSession == session.SessionID)
                             {
                                 session.Send(data, 0, data.Length);
                             }
                         }
                     }
                 }
             }
         }
     }
     catch (Exception ex)
     {
         //TODO 日志
         throw ex;
     }
 }
Example #5
0
 public async Task SendAll(MsgQueueList msg)
 {
     WebSocketApp.SendMsgToAllClients(msg);
 }
Example #6
0
 public async Task SendOne(MsgQueueList msg)
 {
     WebSocketApp.SendMsgToSignleClient(msg);
 }