头像功能完善,头像同步更新机制,BUG修复,接下来一段时间针对代码重构,v1.6.9

This commit is contained in:
dathlin
2017-10-10 21:58:53 +08:00
parent 1c4181363e
commit ac410692c1
49 changed files with 751 additions and 542 deletions

View File

@@ -506,16 +506,16 @@ namespace 软件系统服务端模版
// 先判定框架版本是否正确
if (!UserServer.ServerSettings.AllowLoginWhenFramewordVersionNotCheck)
{
SystemVersion sv = new SystemVersion(frameworkVersion);
if (sv < SoftBasic.FrameworkVersion)
{
account.LoginEnable = false;
account.ForbidMessage = "框架版本检测失败,请更新";
RuntimeLogHelper?.WriteWarn("框架版本验证失败version:" + frameworkVersion);
}
}
//if (!UserServer.ServerSettings.AllowLoginWhenFramewordVersionNotCheck)
//{
// SystemVersion sv = new SystemVersion(frameworkVersion);
// if (sv < SoftBasic.FrameworkVersion)
// {
// account.LoginEnable = false;
// account.ForbidMessage = "框架版本检测失败,请更新";
// RuntimeLogHelper?.WriteWarn("框架版本验证失败version:" + frameworkVersion);
// }
//}
// 检测是否重复登录
if (account.LoginEnable)
@@ -627,11 +627,17 @@ namespace 软件系统服务端模版
UserServer.ServerAccounts.UpdatePortraitMD5(UserName, SmallPortraitMD5, LargePortraitMD5);
net_simplify_server.SendMessage(state, handle, "成功");
// 推送头像更新消息
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode., UserName);
}
catch(Exception ex)
{
net_simplify_server.SendMessage(state, handle, "失败,原因是:" + ex.Message);
}
}
else if(handle==CommonHeadCode.SimplifyHeadCode.)
{
@@ -971,56 +977,63 @@ namespace 软件系统服务端模版
private void Net_socket_server_ClientOffline(AsyncStateOne object1, string object2)
{
RemoveOnlineClient(object1.LoginAlias);
RemoveOnlineClient(object1.ClientUniqueID);
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.线, object1.ClientUniqueID);
UserInterfaceMessageRender(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + "" + object1.LoginAlias + " " + object2);
UserInterfaceMessageRender(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1.IpAddress + "" + object1.LoginAlias + " " + object2);
}
private void Net_socket_server_ClientOnline(AsyncStateOne object1)
{
AddOnlineClient(object1.LoginAlias, object1._IpEnd_Point.Address.ToString());
// 上线后回发一条数据初始化信息
JObject json = new JObject
{
{ "Time", new JValue(DateTime.Now) },
{ "FileCount", new JValue(ShareFileContainer.FileCount) },
{ "chats", new JValue(Chats_Managment.ToSaveString())}
{ "chats", new JValue(Chats_Managment.ToSaveString())},
{ "ClientsOnline", new JValue(ClientsOnlineCache) }
};
// 发送客户端的初始化数据
net_socket_server.Send(object1, CommonHeadCode.MultiNetHeadCode., json.ToString());
// 触发上下线功能
UserInterfaceMessageRender(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1._IpEnd_Point.Address.ToString() + "" + object1.LoginAlias + " 上线");
UserInterfaceMessageRender(DateTime.Now.ToString("MM-dd HH:mm:ss ") + object1.IpAddress + "" + object1.LoginAlias + " 上线");
NetAccount account = new NetAccount();
account.UserName = object1.LoginAlias;
account.Roles = UserServer.ServerRoles.GetRolesByUserName(object1.LoginAlias);
account.IpAddress = object1.IpAddress;
account.Alias = UserServer.ServerAccounts.GetAccountAlias(object1.LoginAlias);
account.Factory = UserServer.ServerAccounts.GetAccountFactory(object1.LoginAlias);
account.LoginTime = DateTime.Now;
account.UniqueId = object1.ClientUniqueID;
AddOnlineClient(account);
Thread.Sleep(100);
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.线, JObject.FromObject(account).ToString());
}
private List<NetAccount> OnlineClients = new List<NetAccount>();
private SimpleHybirdLock hybirdLock = new SimpleHybirdLock();
private void AddOnlineClient(string userName,string ip)
private void AddOnlineClient(NetAccount account)
{
NetAccount account = new NetAccount();
account.UserName = userName;
account.Roles = UserServer.ServerRoles.GetRolesByUserName(userName);
account.IpAddress = ip;
account.Alias = UserServer.ServerAccounts.GetAccountAlias(userName);
account.Factory = UserServer.ServerAccounts.GetAccountFactory(userName);
account.LoginTime = DateTime.Now;
hybirdLock.Enter();
OnlineClients.Add(account);
ClientsOnlineCache = JArray.FromObject(OnlineClients).ToString();
hybirdLock.Leave();
}
private void RemoveOnlineClient(string userName)
private void RemoveOnlineClient(string uniqueId)
{
hybirdLock.Enter();
int index = -1;
for (int i = 0; i < OnlineClients.Count; i++)
{
if (OnlineClients[i].UserName == userName)
if (OnlineClients[i].UniqueId == uniqueId)
{
index = i;
break;
@@ -1032,21 +1045,12 @@ namespace 软件系统服务端模版
OnlineClients.RemoveAt(index);
}
ClientsOnlineCache = JArray.FromObject(OnlineClients).ToString();
hybirdLock.Leave();
}
private string GetOnlineClientsJson()
{
string result = string.Empty;
hybirdLock.Enter();
result = JArray.FromObject(OnlineClients).ToString();
hybirdLock.Leave();
return result;
}
private string ClientsOnlineCache = "[]";
@@ -1063,8 +1067,6 @@ namespace 软件系统服务端模版
label4.Text = net_socket_server.ClientCount.ToString();
}));
}
net_socket_server.SendAllClients(CommonHeadCode.MultiNetHeadCode.线, GetOnlineClientsJson());
}
/// <summary>
@@ -1359,7 +1361,7 @@ namespace 软件系统服务端模版
//此处为测试
Invoke(new Action(() =>
{
textBox1.AppendText($"{DateTime.Now.ToString("MM-dd HH:mm:ss ")}来自IP:{state._IpEnd_Point.Address.ToString()} 内容:{data}{Environment.NewLine}");
textBox1.AppendText($"{DateTime.Now.ToString("MM-dd HH:mm:ss ")}来自IP:{state.IpEndPoint.Address.ToString()} 内容:{data}{Environment.NewLine}");
}));
}