forked from powerfun/udpservice
内存优化
This commit is contained in:
1 parent
c3a9437fc8
commit
9f134a2d64
5 files changed
+88
-126
No files matched your search
@@ -556,19 +556,19 @@ namespace OnlineUserPool.ViewModels
|
||||
private void HandleGameRoomProcess(ReceiveModel msg)
|
||||
{
|
||||
var msg1 = msg as GameRoomProcessCommand;
|
||||
var room = RoomList.ToList().Where(c => c.RoomId == msg1.RoomId).FirstOrDefault();
|
||||
var client = Clients.Where(c => c.MemberId == msg1.UserId).FirstOrDefault();
|
||||
var room = RoomList.ToList().FirstOrDefault(c => c.RoomId == msg1.RoomId);
|
||||
var client = Clients.FirstOrDefault(c => c.MemberId == msg1.UserId);
|
||||
if (room != null)
|
||||
{
|
||||
var list = room.List;
|
||||
var player = list.Where(c => c.UserId == msg1.UserId).FirstOrDefault();
|
||||
var player = list.FirstOrDefault(c => c.UserId == msg1.UserId);
|
||||
if (player != null)
|
||||
{
|
||||
player.Process = msg1.Process;
|
||||
}
|
||||
var notReady = list.Where(c => c.Process < TOTAL_PROCESS).Any();
|
||||
|
||||
var notReady = list.Any(c => c.Process < TOTAL_PROCESS);
|
||||
var now = DateTime.Now;
|
||||
|
||||
var timespan = now - room.StatusChangedTime;
|
||||
//超时时间1分钟所有人强制开始
|
||||
if ((notReady && timespan.TotalSeconds > ROOM_TIME_OUT) || !notReady)
|
||||
@@ -837,51 +837,49 @@ namespace OnlineUserPool.ViewModels
|
||||
private NetworkData HandleGzipNetworkData(List<MsgModel> list, HostModel item)
|
||||
{
|
||||
sb.Clear();
|
||||
foreach (var obj in list.Where(m => m.CompetitionId == item.Competitionid).Select(m => m.ToString(2)))
|
||||
sb.Append("l{");
|
||||
var runtimeList = list.Where(m => m.CompetitionId == item.Competitionid).Select(m => m.ToString(2)).ToList();
|
||||
foreach (var obj in runtimeList)
|
||||
{
|
||||
sb.Append(obj);
|
||||
sb.Append("|");
|
||||
}
|
||||
sb.Remove(sb.Length - 1, 1);
|
||||
var temp = sb.ToString();
|
||||
|
||||
sb.Clear();
|
||||
foreach (var obj in Clients.Where(c => c.IsWatch && c.Competitionid == item.Competitionid).Select(c => c.MemberId))
|
||||
{
|
||||
sb.Append(obj);
|
||||
sb.Append("|");
|
||||
}
|
||||
|
||||
if (sb.Length > 0)
|
||||
if (runtimeList.Any())
|
||||
{
|
||||
sb.Remove(sb.Length - 1, 1);
|
||||
}
|
||||
|
||||
var watchList1 = sb.ToString();
|
||||
|
||||
sb.Append("};w{");
|
||||
|
||||
var watchList = Clients.Where(c => c.IsWatch && c.Competitionid == item.Competitionid).Select(c => c.MemberId).ToList();
|
||||
foreach (var obj in watchList)
|
||||
{
|
||||
sb.Append(obj);
|
||||
sb.Append("|");
|
||||
}
|
||||
if (watchList.Any())
|
||||
{
|
||||
sb.Remove(sb.Length - 1, 1);
|
||||
}
|
||||
|
||||
sb.Append("};e{");
|
||||
|
||||
sb.Clear();
|
||||
foreach (var c in list.Where(c => c.RoomId > 0 || c.FrameRate > 0))
|
||||
var errorList = list.Where(c => c.RoomId > 0 || c.FrameRate > 0).ToList();
|
||||
foreach (var c in errorList)
|
||||
{
|
||||
sb.Append($"{c.MemberId},{c.RoomId},{c.FrameRate},{c.TotalTicks}");
|
||||
sb.Append("|");
|
||||
}
|
||||
|
||||
if (sb.Length > 0)
|
||||
if (errorList.Any())
|
||||
{
|
||||
sb.Remove(sb.Length - 1, 1);
|
||||
}
|
||||
|
||||
var e = sb.ToString();
|
||||
sb.Clear();
|
||||
sb.Append("*l{");
|
||||
sb.Append(temp);
|
||||
sb.Append("};w{");
|
||||
sb.Append(watchList1);
|
||||
sb.Append("};e{");
|
||||
sb.Append(e);
|
||||
sb.Append("};#");
|
||||
sb.Append("};");
|
||||
|
||||
var strV2 = sb.ToString();
|
||||
var data2 = new NetworkData(strV2);
|
||||
strV2 = null;
|
||||
return data2;
|
||||
}
|
||||
|
||||
@@ -1007,19 +1005,14 @@ namespace OnlineUserPool.ViewModels
|
||||
return Encoding.UTF8.GetBytes(this._txt);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
//this._txt = null;
|
||||
}
|
||||
|
||||
private byte[] GetCompressBytes()
|
||||
{
|
||||
var temp = this._txt;
|
||||
if(temp[0] == '*')
|
||||
{
|
||||
temp = temp.Substring(1);
|
||||
}
|
||||
if(temp.Last() == '#')
|
||||
{
|
||||
temp = temp.Substring(0, temp.Length - 1);
|
||||
}
|
||||
return Encoding.UTF8.GetBytes($"*{ Convert.ToBase64String(CommonHelper.Compress(temp)) }#");
|
||||
return Encoding.UTF8.GetBytes($"*{Convert.ToBase64String(CommonHelper.Compress(this._txt))}#");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user