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; } }
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; } }
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; } }
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; } }
public async Task SendAll(MsgQueueList msg) { WebSocketApp.SendMsgToAllClients(msg); }
public async Task SendOne(MsgQueueList msg) { WebSocketApp.SendMsgToSignleClient(msg); }