mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2026-04-20 05:25:00 +00:00
新增加载项DataRequest控制分支;变量名优化 (#56)
* 新增加载项DataRequest控制分支;变量名优化 * 线程安全优化 --------- Co-authored-by: milimoe <mili@wrss.org>
This commit is contained in:
parent
3d2cf46631
commit
4498a6fbf8
@ -21,9 +21,9 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
/// <typeparam name="T"></typeparam>
|
/// <typeparam name="T"></typeparam>
|
||||||
public class DataRequestController<T> where T : ISocketMessageProcessor
|
public class DataRequestController<T> where T : ISocketMessageProcessor
|
||||||
{
|
{
|
||||||
public ServerModel<T> Server { get; }
|
public ServerModel<T> Client { get; }
|
||||||
public SQLHelper? SQLHelper => Server.SQLHelper;
|
public SQLHelper? SQLHelper => Client.SQLHelper;
|
||||||
public MailSender? MailSender => Server.MailSender;
|
public MailSender? MailSender => Client.MailSender;
|
||||||
public Authenticator? Authenticator { get; }
|
public Authenticator? Authenticator { get; }
|
||||||
public DataRequestType LastRequest => _lastRequest;
|
public DataRequestType LastRequest => _lastRequest;
|
||||||
|
|
||||||
@ -35,11 +35,11 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 数据请求控制器
|
/// 数据请求控制器
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="server"></param>
|
/// <param name="client"></param>
|
||||||
public DataRequestController(ServerModel<T> server)
|
public DataRequestController(ServerModel<T> client)
|
||||||
{
|
{
|
||||||
Server = server;
|
Client = client;
|
||||||
if (SQLHelper != null) Authenticator = new(Server, SQLHelper, MailSender);
|
if (SQLHelper != null) Authenticator = new(Client, SQLHelper, MailSender);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -52,7 +52,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
{
|
{
|
||||||
Dictionary<string, object> result = [];
|
Dictionary<string, object> result = [];
|
||||||
_lastRequest = type;
|
_lastRequest = type;
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " -> " + DataRequestSet.GetTypeString(_lastRequest), InvokeMessageType.DataRequest);
|
ServerHelper.WriteLine(Client.GetClientName() + " -> " + DataRequestSet.GetTypeString(_lastRequest), InvokeMessageType.DataRequest);
|
||||||
|
|
||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
@ -199,6 +199,14 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
RespondOffer(data, result);
|
RespondOffer(data, result);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DataRequestType.Addon_Plugin:
|
||||||
|
result = HandleDataRequest_ServerPlugin(data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DataRequestType.Addon_Module:
|
||||||
|
result = HandleDataRequest_GameModuleServer(data);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -230,11 +238,11 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
msg = DataRequestService.GetPluginCancelString(DataRequestType.RunTime_Logout, eventArgs);
|
msg = DataRequestService.GetPluginCancelString(DataRequestType.RunTime_Logout, eventArgs);
|
||||||
ServerHelper.WriteLine(msg, InvokeMessageType.DataRequest, LogLevel.Warning);
|
ServerHelper.WriteLine(msg, InvokeMessageType.DataRequest, LogLevel.Warning);
|
||||||
}
|
}
|
||||||
else if (Server.IsLoginKey(key))
|
else if (Client.IsLoginKey(key))
|
||||||
{
|
{
|
||||||
// 从玩家列表移除
|
// 从玩家列表移除
|
||||||
Server.RemoveUser();
|
Client.RemoveUser();
|
||||||
Server.GetUsersCount();
|
Client.GetUsersCount();
|
||||||
msg = "你已成功退出登录! ";
|
msg = "你已成功退出登录! ";
|
||||||
}
|
}
|
||||||
else eventArgs.Success = false;
|
else eventArgs.Success = false;
|
||||||
@ -367,7 +375,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result = await Server.QuitRoom(roomid, isMaster);
|
result = await Client.QuitRoom(roomid, isMaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
eventArgs.Success = result;
|
eventArgs.Success = result;
|
||||||
@ -406,11 +414,11 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
SQLHelper.ExecuteDataSet(RoomQuery.Select_RoomByRoomId(SQLHelper, roomid));
|
SQLHelper.ExecuteDataSet(RoomQuery.Select_RoomByRoomId(SQLHelper, roomid));
|
||||||
if (SQLHelper.Success)
|
if (SQLHelper.Success)
|
||||||
{
|
{
|
||||||
FunGameSystem.RoomList.IntoRoom(roomid, Server.User);
|
FunGameSystem.RoomList.IntoRoom(roomid, Client.User);
|
||||||
Server.InRoom = room;
|
Client.InRoom = room;
|
||||||
Server.User.OnlineState = OnlineState.InRoom;
|
Client.User.OnlineState = OnlineState.InRoom;
|
||||||
await Server.SendClients(Server.Listener.ClientList.Where(c => c != null && roomid == c.InRoom.Roomid && c.User.Id != 0),
|
await Client.SendClients(Client.Listener.ClientList.Where(c => c != null && roomid == c.InRoom.Roomid && c.User.Id != 0),
|
||||||
SocketMessageType.Chat, Server.User.Username, DateTimeUtility.GetNowShortTime() + " [ " + Server.User.Username + " ] 进入了房间。");
|
SocketMessageType.Chat, Client.User.Username, DateTimeUtility.GetNowShortTime() + " [ " + Client.User.Username + " ] 进入了房间。");
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -482,7 +490,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
if (requestData.Count >= 1)
|
if (requestData.Count >= 1)
|
||||||
{
|
{
|
||||||
roomid = DataRequest.GetDictionaryJsonObject<string>(requestData, "roomid") ?? "-1";
|
roomid = DataRequest.GetDictionaryJsonObject<string>(requestData, "roomid") ?? "-1";
|
||||||
User user = Server.User;
|
User user = Client.User;
|
||||||
|
|
||||||
if (roomid != "-1" && user.Id != 0 && user.Id != FunGameSystem.RoomList.GetRoomMaster(roomid).Id && !FunGameSystem.RoomList.GetReadyUserList(roomid).Contains(user))
|
if (roomid != "-1" && user.Id != 0 && user.Id != FunGameSystem.RoomList.GetRoomMaster(roomid).Id && !FunGameSystem.RoomList.GetReadyUserList(roomid).Contains(user))
|
||||||
{
|
{
|
||||||
@ -507,7 +515,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
if (requestData.Count >= 1)
|
if (requestData.Count >= 1)
|
||||||
{
|
{
|
||||||
roomid = DataRequest.GetDictionaryJsonObject<string>(requestData, "roomid") ?? "-1";
|
roomid = DataRequest.GetDictionaryJsonObject<string>(requestData, "roomid") ?? "-1";
|
||||||
User user = Server.User;
|
User user = Client.User;
|
||||||
|
|
||||||
if (roomid != "-1" && user.Id != 0 && user.Id != FunGameSystem.RoomList.GetRoomMaster(roomid).Id && FunGameSystem.RoomList.GetReadyUserList(roomid).Contains(user))
|
if (roomid != "-1" && user.Id != 0 && user.Id != FunGameSystem.RoomList.GetRoomMaster(roomid).Id && FunGameSystem.RoomList.GetReadyUserList(roomid).Contains(user))
|
||||||
{
|
{
|
||||||
@ -540,8 +548,8 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
else if (msg.Trim() != "")
|
else if (msg.Trim() != "")
|
||||||
{
|
{
|
||||||
await Server.SendClients(Server.Listener.ClientList.Where(c => c != null && Server.InRoom.Roomid == c.InRoom.Roomid && c.User.Id != 0),
|
await Client.SendClients(Client.Listener.ClientList.Where(c => c != null && Client.InRoom.Roomid == c.InRoom.Roomid && c.User.Id != 0),
|
||||||
SocketMessageType.Chat, Server.User.Username, msg);
|
SocketMessageType.Chat, Client.User.Username, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
eventArgs.Success = !eventArgs.Cancel;
|
eventArgs.Success = !eventArgs.Cancel;
|
||||||
@ -583,8 +591,8 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
if (_isReadyCheckCD[0] == false)
|
if (_isReadyCheckCD[0] == false)
|
||||||
{
|
{
|
||||||
// 提醒玩家准备
|
// 提醒玩家准备
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "还有玩家尚未准备,无法开始游戏。", "", 0, Server.User.Username);
|
Client.SendSystemMessage(ShowMessageType.None, "还有玩家尚未准备,无法开始游戏。", "", 0, Client.User.Username);
|
||||||
Server.SendSystemMessage(ShowMessageType.Tip, "房主即将开始游戏,请准备!", "请准备就绪", 10, usernames);
|
Client.SendSystemMessage(ShowMessageType.Tip, "房主即将开始游戏,请准备!", "请准备就绪", 10, usernames);
|
||||||
_isReadyCheckCD[0] = true;
|
_isReadyCheckCD[0] = true;
|
||||||
TaskUtility.RunTimer(() =>
|
TaskUtility.RunTimer(() =>
|
||||||
{
|
{
|
||||||
@ -593,7 +601,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "还有玩家尚未准备,无法开始游戏。15秒内只能发送一次准备提醒。", "", 0, Server.User.Username);
|
Client.SendSystemMessage(ShowMessageType.None, "还有玩家尚未准备,无法开始游戏。15秒内只能发送一次准备提醒。", "", 0, Client.User.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -601,12 +609,12 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
List<User> users = FunGameSystem.RoomList.GetUsers(roomid);
|
List<User> users = FunGameSystem.RoomList.GetUsers(roomid);
|
||||||
if (users.Count < 2)
|
if (users.Count < 2)
|
||||||
{
|
{
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "玩家数量不足,无法开始游戏。", "", 0, Server.User.Username);
|
Client.SendSystemMessage(ShowMessageType.None, "玩家数量不足,无法开始游戏。", "", 0, Client.User.Username);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
usernames = [.. users.Select(user => user.Username)];
|
usernames = [.. users.Select(user => user.Username)];
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "所有玩家均已准备,游戏将在10秒后开始。", "", 0, usernames);
|
Client.SendSystemMessage(ShowMessageType.None, "所有玩家均已准备,游戏将在10秒后开始。", "", 0, usernames);
|
||||||
StartGame(roomid, users, usernames);
|
StartGame(roomid, users, usernames);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
@ -615,8 +623,8 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
else if (_isReadyCheckCD[1] == false)
|
else if (_isReadyCheckCD[1] == false)
|
||||||
{
|
{
|
||||||
// 提醒房主开始游戏
|
// 提醒房主开始游戏
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "已提醒房主立即开始游戏。", "", 0, Server.User.Username);
|
Client.SendSystemMessage(ShowMessageType.None, "已提醒房主立即开始游戏。", "", 0, Client.User.Username);
|
||||||
Server.SendSystemMessage(ShowMessageType.Tip, "房间中的玩家已请求你立即开始游戏。", "请求开始", 10, FunGameSystem.RoomList[roomid].RoomMaster.Username);
|
Client.SendSystemMessage(ShowMessageType.Tip, "房间中的玩家已请求你立即开始游戏。", "请求开始", 10, FunGameSystem.RoomList[roomid].RoomMaster.Username);
|
||||||
_isReadyCheckCD[1] = true;
|
_isReadyCheckCD[1] = true;
|
||||||
TaskUtility.RunTimer(() =>
|
TaskUtility.RunTimer(() =>
|
||||||
{
|
{
|
||||||
@ -625,7 +633,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Server.SendSystemMessage(ShowMessageType.None, "15秒内只能发送一次提醒,请稍后再试。", "", 0, Server.User.Username);
|
Client.SendSystemMessage(ShowMessageType.None, "15秒内只能发送一次提醒,请稍后再试。", "", 0, Client.User.Username);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -651,20 +659,20 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
if (FunGameSystem.GameModuleLoader != null && FunGameSystem.GameModuleLoader.ModuleServers.ContainsKey(room.GameModule))
|
if (FunGameSystem.GameModuleLoader != null && FunGameSystem.GameModuleLoader.ModuleServers.ContainsKey(room.GameModule))
|
||||||
{
|
{
|
||||||
room.RoomState = RoomState.Gaming;
|
room.RoomState = RoomState.Gaming;
|
||||||
Server.NowGamingServer = FunGameSystem.GameModuleLoader.GetServerMode(room.GameModule);
|
Client.NowGamingServer = FunGameSystem.GameModuleLoader.GetServerMode(room.GameModule);
|
||||||
Server.User.OnlineState = OnlineState.Gaming;
|
Client.User.OnlineState = OnlineState.Gaming;
|
||||||
Dictionary<string, IServerModel> all = Server.Listener.UserList.Cast<IServerModel>().ToDictionary(k => k.User.Username, v => v);
|
Dictionary<string, IServerModel> all = Client.Listener.UserList.Cast<IServerModel>().ToDictionary(k => k.User.Username, v => v);
|
||||||
// 给其他玩家赋值模组服务器
|
// 给其他玩家赋值模组服务器
|
||||||
foreach (IServerModel model in all.Values.Where(s => s.User.Username != Server.User.Username))
|
foreach (IServerModel model in all.Values.Where(s => s.User.Username != Client.User.Username))
|
||||||
{
|
{
|
||||||
model.NowGamingServer = Server.NowGamingServer;
|
model.NowGamingServer = Client.NowGamingServer;
|
||||||
model.User.OnlineState = OnlineState.Gaming;
|
model.User.OnlineState = OnlineState.Gaming;
|
||||||
}
|
}
|
||||||
GamingObject obj = new(room, users, Server, all);
|
GamingObject obj = new(room, users, Client, all);
|
||||||
if (Server.NowGamingServer.StartServer(obj))
|
if (Client.NowGamingServer.StartServer(obj))
|
||||||
{
|
{
|
||||||
Server.NowGamingServer.GamingObjects.TryAdd(room.Roomid, obj);
|
Client.NowGamingServer.GamingObjects.TryAdd(room.Roomid, obj);
|
||||||
foreach (IServerModel serverTask in Server.Listener.UserList.Where(model => usernames.Contains(model.User.Username)))
|
foreach (IServerModel serverTask in Client.Listener.UserList.Where(model => usernames.Contains(model.User.Username)))
|
||||||
{
|
{
|
||||||
if (serverTask != null && serverTask.Socket != null)
|
if (serverTask != null && serverTask.Socket != null)
|
||||||
{
|
{
|
||||||
@ -697,7 +705,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
string password = DataRequest.GetDictionaryJsonObject<string>(requestData, "password") ?? "";
|
string password = DataRequest.GetDictionaryJsonObject<string>(requestData, "password") ?? "";
|
||||||
string email = DataRequest.GetDictionaryJsonObject<string>(requestData, "email") ?? "";
|
string email = DataRequest.GetDictionaryJsonObject<string>(requestData, "email") ?? "";
|
||||||
string verifycode = DataRequest.GetDictionaryJsonObject<string>(requestData, "verifycode") ?? "";
|
string verifycode = DataRequest.GetDictionaryJsonObject<string>(requestData, "verifycode") ?? "";
|
||||||
(msg, returnType, success) = DataRequestService.Reg(Server, username, password, email, verifycode, Server.Socket?.ClientIP ?? "");
|
(msg, returnType, success) = DataRequestService.Reg(Client, username, password, email, verifycode, Client.Socket?.ClientIP ?? "");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -741,10 +749,10 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
// CheckLogin的情况
|
// CheckLogin的情况
|
||||||
if (key != Guid.Empty)
|
if (key != Guid.Empty)
|
||||||
{
|
{
|
||||||
if (Server.IsLoginKey(key))
|
if (Client.IsLoginKey(key))
|
||||||
{
|
{
|
||||||
await Server.CheckLogin();
|
await Client.CheckLogin();
|
||||||
user = Server.User;
|
user = Client.User;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -758,7 +766,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
(bool success, DataSet dsUser, msg, key) = DataRequestService.PreLogin(this, username, password, autokey);
|
(bool success, DataSet dsUser, msg, key) = DataRequestService.PreLogin(this, username, password, autokey);
|
||||||
if (success)
|
if (success)
|
||||||
{
|
{
|
||||||
Server.PreLogin(dsUser, key);
|
Client.PreLogin(dsUser, key);
|
||||||
resultData.Add("key", key);
|
resultData.Add("key", key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -797,7 +805,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
if ((DateTime.Now - SendTime).TotalMinutes >= 10)
|
if ((DateTime.Now - SendTime).TotalMinutes >= 10)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 验证码已过期");
|
ServerHelper.WriteLine(Client.GetClientName() + " 验证码已过期");
|
||||||
msg = "此验证码已过期,请重新找回密码。";
|
msg = "此验证码已过期,请重新找回密码。";
|
||||||
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(SQLHelper, username, email));
|
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(SQLHelper, username, email));
|
||||||
}
|
}
|
||||||
@ -847,18 +855,18 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
string[] To = [email];
|
string[] To = [email];
|
||||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + $" 已向{email}发送验证码:{forgetVerify}");
|
ServerHelper.WriteLine(Client.GetClientName() + $" 已向{email}发送验证码:{forgetVerify}");
|
||||||
msg = "";
|
msg = "";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 无法发送验证码");
|
ServerHelper.WriteLine(Client.GetClientName() + " 无法发送验证码");
|
||||||
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // 不使用MailSender的情况
|
else // 不使用MailSender的情况
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + $" 验证码为:{forgetVerify},但因 SMTP 服务未开启,请服务器管理员告知此用户");
|
ServerHelper.WriteLine(Client.GetClientName() + $" 验证码为:{forgetVerify},但因 SMTP 服务未开启,请服务器管理员告知此用户");
|
||||||
msg = "";
|
msg = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -867,7 +875,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
{
|
{
|
||||||
// 发送过验证码且验证码没有过期
|
// 发送过验证码且验证码没有过期
|
||||||
string ForgetVerifyCode = (string)dr[ForgetVerifyCodes.Column_ForgetVerifyCode];
|
string ForgetVerifyCode = (string)dr[ForgetVerifyCodes.Column_ForgetVerifyCode];
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
|
ServerHelper.WriteLine(Client.GetClientName() + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
|
||||||
msg = "";
|
msg = "";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -896,7 +904,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
int newMaxUsers = DataRequest.GetDictionaryJsonObject<int>(requestData, "maxUsers");
|
int newMaxUsers = DataRequest.GetDictionaryJsonObject<int>(requestData, "maxUsers");
|
||||||
string newModule = DataRequest.GetDictionaryJsonObject<string>(requestData, "module") ?? "";
|
string newModule = DataRequest.GetDictionaryJsonObject<string>(requestData, "module") ?? "";
|
||||||
string newMap = DataRequest.GetDictionaryJsonObject<string>(requestData, "map") ?? "";
|
string newMap = DataRequest.GetDictionaryJsonObject<string>(requestData, "map") ?? "";
|
||||||
User user = Server.User;
|
User user = Client.User;
|
||||||
if (roomid != "-1" && FunGameSystem.RoomList.Exists(roomid))
|
if (roomid != "-1" && FunGameSystem.RoomList.Exists(roomid))
|
||||||
{
|
{
|
||||||
Room room = FunGameSystem.RoomList[roomid];
|
Room room = FunGameSystem.RoomList[roomid];
|
||||||
@ -995,7 +1003,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
SQLHelper.UpdateRoomMaster(roomid, newMaster.Id);
|
SQLHelper.UpdateRoomMaster(roomid, newMaster.Id);
|
||||||
if (SQLHelper.Result == SQLResult.Success)
|
if (SQLHelper.Result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
await Server.SendClients(Server.Listener.ClientList.Where(c => c != null && c.InRoom.Roomid == roomid), SocketMessageType.UpdateRoomMaster, room);
|
await Client.SendClients(Client.Listener.ClientList.Where(c => c != null && c.InRoom.Roomid == roomid), SocketMessageType.UpdateRoomMaster, room);
|
||||||
ServerHelper.WriteLine($"[UpdateRoomMaster] RoomID: {roomid} 房主变更: {oldMaster.Username} -> {newMaster.Username}");
|
ServerHelper.WriteLine($"[UpdateRoomMaster] RoomID: {roomid} 房主变更: {oldMaster.Username} -> {newMaster.Username}");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1024,15 +1032,15 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
{
|
{
|
||||||
_isMatching = true;
|
_isMatching = true;
|
||||||
if (user.OnlineState == OnlineState.Online) user.OnlineState = OnlineState.Matching;
|
if (user.OnlineState == OnlineState.Online) user.OnlineState = OnlineState.Matching;
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 开始匹配。类型:" + RoomSet.GetTypeString(type));
|
ServerHelper.WriteLine(Client.GetClientName() + " 开始匹配。类型:" + RoomSet.GetTypeString(type));
|
||||||
TaskUtility.NewTask(async () =>
|
TaskUtility.NewTask(async () =>
|
||||||
{
|
{
|
||||||
if (_isMatching)
|
if (_isMatching)
|
||||||
{
|
{
|
||||||
Room room = await MatchingRoom(type, user);
|
Room room = await MatchingRoom(type, user);
|
||||||
if (_isMatching && Server.Socket != null)
|
if (_isMatching && Client.Socket != null)
|
||||||
{
|
{
|
||||||
await Server.Send(SocketMessageType.MatchRoom, room);
|
await Client.Send(SocketMessageType.MatchRoom, room);
|
||||||
}
|
}
|
||||||
_isMatching = false;
|
_isMatching = false;
|
||||||
}
|
}
|
||||||
@ -1050,8 +1058,8 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
{
|
{
|
||||||
if (_isMatching)
|
if (_isMatching)
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(Server.GetClientName() + " 取消了匹配。");
|
ServerHelper.WriteLine(Client.GetClientName() + " 取消了匹配。");
|
||||||
if (Server.User.OnlineState == OnlineState.Matching) Server.User.OnlineState = OnlineState.Online;
|
if (Client.User.OnlineState == OnlineState.Matching) Client.User.OnlineState = OnlineState.Online;
|
||||||
_isMatching = false;
|
_isMatching = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1239,7 +1247,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
else if (SQLHelper != null)
|
else if (SQLHelper != null)
|
||||||
{
|
{
|
||||||
long userId = Server.User.Id;
|
long userId = Client.User.Id;
|
||||||
if (userId != 0)
|
if (userId != 0)
|
||||||
{
|
{
|
||||||
DataRow? dr = SQLHelper.ExecuteDataRow(UserSignIns.Select_GetUserSignIn(SQLHelper, userId));
|
DataRow? dr = SQLHelper.ExecuteDataRow(UserSignIns.Select_GetUserSignIn(SQLHelper, userId));
|
||||||
@ -1808,8 +1816,8 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
if (offer != null)
|
if (offer != null)
|
||||||
{
|
{
|
||||||
// 检查当前用户是否有权限查看(报价创建者或接收者)允许管理员使用 API 查询报价
|
// 检查当前用户是否有权限查看(报价创建者或接收者)允许管理员使用 API 查询报价
|
||||||
long userId = Server.User.Id;
|
long userId = Client.User.Id;
|
||||||
if ((apiQuery && Server.User.IsAdmin) || offer.Offeror == userId || offer.Offeree == userId)
|
if ((apiQuery && Client.User.IsAdmin) || offer.Offeror == userId || offer.Offeree == userId)
|
||||||
{
|
{
|
||||||
resultData.Add("offer", offer);
|
resultData.Add("offer", offer);
|
||||||
msg = "";
|
msg = "";
|
||||||
@ -1838,7 +1846,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
if (SQLHelper != null && requestData.Count >= 1)
|
if (SQLHelper != null && requestData.Count >= 1)
|
||||||
{
|
{
|
||||||
long offeree = DataRequest.GetDictionaryJsonObject<long>(requestData, "offeree");
|
long offeree = DataRequest.GetDictionaryJsonObject<long>(requestData, "offeree");
|
||||||
long offeror = Server.User.Id;
|
long offeror = Client.User.Id;
|
||||||
if (offeror != 0 && offeree != 0 && offeror != offeree)
|
if (offeror != 0 && offeree != 0 && offeror != offeree)
|
||||||
{
|
{
|
||||||
SQLHelper.AddOffer(offeror, offeree);
|
SQLHelper.AddOffer(offeror, offeree);
|
||||||
@ -1875,7 +1883,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
OfferActionType action = DataRequest.GetDictionaryJsonObject<OfferActionType>(requestData, "action");
|
OfferActionType action = DataRequest.GetDictionaryJsonObject<OfferActionType>(requestData, "action");
|
||||||
List<Guid> offerorItems = DataRequest.GetDictionaryJsonObject<List<Guid>>(requestData, "offerorItems") ?? [];
|
List<Guid> offerorItems = DataRequest.GetDictionaryJsonObject<List<Guid>>(requestData, "offerorItems") ?? [];
|
||||||
List<Guid> offereeItems = DataRequest.GetDictionaryJsonObject<List<Guid>>(requestData, "offereeItems") ?? [];
|
List<Guid> offereeItems = DataRequest.GetDictionaryJsonObject<List<Guid>>(requestData, "offereeItems") ?? [];
|
||||||
long userId = Server.User.Id;
|
long userId = Client.User.Id;
|
||||||
|
|
||||||
Offer? offer = SQLHelper.GetOffer(offerId);
|
Offer? offer = SQLHelper.GetOffer(offerId);
|
||||||
if (offer != null && (offer.Offeror == userId || offer.Offeree == userId))
|
if (offer != null && (offer.Offeror == userId || offer.Offeree == userId))
|
||||||
@ -2063,7 +2071,7 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
{
|
{
|
||||||
long offerId = DataRequest.GetDictionaryJsonObject<long>(requestData, "id");
|
long offerId = DataRequest.GetDictionaryJsonObject<long>(requestData, "id");
|
||||||
OfferActionType action = DataRequest.GetDictionaryJsonObject<OfferActionType>(requestData, "action");
|
OfferActionType action = DataRequest.GetDictionaryJsonObject<OfferActionType>(requestData, "action");
|
||||||
long userId = Server.User.Id;
|
long userId = Client.User.Id;
|
||||||
|
|
||||||
Offer? offer = SQLHelper.GetOffer(offerId);
|
Offer? offer = SQLHelper.GetOffer(offerId);
|
||||||
if (offer != null && offer.Offeree == userId)
|
if (offer != null && offer.Offeree == userId)
|
||||||
@ -2181,5 +2189,63 @@ namespace Milimoe.FunGame.Server.Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Addon
|
||||||
|
|
||||||
|
private Dictionary<string, object> HandleDataRequest_ServerPlugin(Dictionary<string, object> requestData)
|
||||||
|
{
|
||||||
|
Dictionary<string, object> result = [];
|
||||||
|
string fromPlugin = DataRequest.GetDictionaryJsonObject<string>(requestData, SocketSet.AddonDataRequestMark_FromPlugin) ?? "";
|
||||||
|
string targetPlugin = DataRequest.GetDictionaryJsonObject<string>(requestData, SocketSet.AddonDataRequestMark_TargetPlugin) ?? "";
|
||||||
|
AddonDataRequestEventArgs args = new(Client, fromPlugin, targetPlugin);
|
||||||
|
if (targetPlugin.Trim() != "")
|
||||||
|
{
|
||||||
|
if (FunGameSystem.ServerPluginLoader?.Plugins.TryGetValue(targetPlugin, out ServerPlugin? server) ?? false && server != null)
|
||||||
|
{
|
||||||
|
Dictionary<string, object> dataServerPlugin = server.HandleDataRequest(requestData, args);
|
||||||
|
foreach (string key in dataServerPlugin.Keys)
|
||||||
|
{
|
||||||
|
result[key] = dataServerPlugin[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (FunGameSystem.WebAPIPluginLoader?.Plugins.TryGetValue(targetPlugin, out WebAPIPlugin? webapi) ?? false && webapi != null)
|
||||||
|
{
|
||||||
|
Dictionary<string, object> dataServerPlugin = webapi.HandleDataRequest(requestData, args);
|
||||||
|
foreach (string key in dataServerPlugin.Keys)
|
||||||
|
{
|
||||||
|
result[key] = dataServerPlugin[key];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
Dictionary<string, object> dataServerPlugins = FunGameSystem.ServerPluginLoader?.HandleDataRequest(requestData, args) ?? [];
|
||||||
|
Dictionary<string, object> dataWebAPIPlugins = FunGameSystem.WebAPIPluginLoader?.HandleDataRequest(requestData, args) ?? [];
|
||||||
|
foreach (string key in dataServerPlugins.Keys)
|
||||||
|
{
|
||||||
|
result[key] = dataServerPlugins[key];
|
||||||
|
}
|
||||||
|
foreach (string key in dataWebAPIPlugins.Keys)
|
||||||
|
{
|
||||||
|
result[key] = dataWebAPIPlugins[key];
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Dictionary<string, object> HandleDataRequest_GameModuleServer(Dictionary<string, object> requestData)
|
||||||
|
{
|
||||||
|
string fromModule = DataRequest.GetDictionaryJsonObject<string>(requestData, SocketSet.AddonDataRequestMark_FromModule) ?? "";
|
||||||
|
string targetModule = DataRequest.GetDictionaryJsonObject<string>(requestData, SocketSet.AddonDataRequestMark_TargetModule) ?? "";
|
||||||
|
AddonDataRequestEventArgs args = new(Client, fromModule, targetModule);
|
||||||
|
if (targetModule.Trim() != "")
|
||||||
|
{
|
||||||
|
if (FunGameSystem.GameModuleLoader?.ModuleServers.TryGetValue(targetModule, out GameModuleServer? server) ?? false && server != null)
|
||||||
|
{
|
||||||
|
return server.HandleDataRequest(requestData, args);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FunGameSystem.GameModuleLoader?.HandleDataRequest(requestData, args) ?? [];
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -164,7 +164,7 @@ void StartServerListening()
|
|||||||
TaskUtility.NewTask(async () =>
|
TaskUtility.NewTask(async () =>
|
||||||
{
|
{
|
||||||
clientip = socket.ClientIP;
|
clientip = socket.ClientIP;
|
||||||
Config.ConnectingPlayerCount++;
|
Config.IncrementConnectingPlayerCount();
|
||||||
bool isConnected = false;
|
bool isConnected = false;
|
||||||
bool isDebugMode = false;
|
bool isDebugMode = false;
|
||||||
|
|
||||||
@ -175,6 +175,7 @@ void StartServerListening()
|
|||||||
SocketObject[] objs = socket.Receive();
|
SocketObject[] objs = socket.Receive();
|
||||||
(isConnected, isDebugMode) = await ConnectController.Connect(listener, socket, token, clientip, objs);
|
(isConnected, isDebugMode) = await ConnectController.Connect(listener, socket, token, clientip, objs);
|
||||||
eventArgs.Success = isConnected;
|
eventArgs.Success = isConnected;
|
||||||
|
Config.DecrementConnectingPlayerCount();
|
||||||
if (isConnected)
|
if (isConnected)
|
||||||
{
|
{
|
||||||
eventArgs.ConnectResult = ConnectResult.Success;
|
eventArgs.ConnectResult = ConnectResult.Success;
|
||||||
@ -191,13 +192,12 @@ void StartServerListening()
|
|||||||
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 连接失败。", InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 连接失败。", InvokeMessageType.Core);
|
||||||
}
|
}
|
||||||
Config.ConnectingPlayerCount--;
|
|
||||||
}).OnError(e =>
|
}).OnError(e =>
|
||||||
{
|
{
|
||||||
|
Config.DecrementConnectingPlayerCount();
|
||||||
ConnectEventArgs eventArgs = new(clientip, Config.ServerPort, ConnectResult.CanNotConnect);
|
ConnectEventArgs eventArgs = new(clientip, Config.ServerPort, ConnectResult.CanNotConnect);
|
||||||
FunGameSystem.ServerPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
FunGameSystem.ServerPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
||||||
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
||||||
if (--Config.ConnectingPlayerCount < 0) Config.ConnectingPlayerCount = 0;
|
|
||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 中断连接!", InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 中断连接!", InvokeMessageType.Core);
|
||||||
ServerHelper.Error(e);
|
ServerHelper.Error(e);
|
||||||
});
|
});
|
||||||
@ -241,7 +241,7 @@ void StartServerListening()
|
|||||||
TaskUtility.NewTask(async () =>
|
TaskUtility.NewTask(async () =>
|
||||||
{
|
{
|
||||||
clientip = socket.ClientIP;
|
clientip = socket.ClientIP;
|
||||||
Config.ConnectingPlayerCount++;
|
Config.IncrementConnectingPlayerCount();
|
||||||
bool isConnected = false;
|
bool isConnected = false;
|
||||||
bool isDebugMode = false;
|
bool isDebugMode = false;
|
||||||
|
|
||||||
@ -256,6 +256,7 @@ void StartServerListening()
|
|||||||
}
|
}
|
||||||
(isConnected, isDebugMode) = await ConnectController.Connect(listener, socket, token, clientip, objs.Where(o => o.SocketType == SocketMessageType.Connect));
|
(isConnected, isDebugMode) = await ConnectController.Connect(listener, socket, token, clientip, objs.Where(o => o.SocketType == SocketMessageType.Connect));
|
||||||
eventArgs.Success = isConnected;
|
eventArgs.Success = isConnected;
|
||||||
|
Config.DecrementConnectingPlayerCount();
|
||||||
if (isConnected)
|
if (isConnected)
|
||||||
{
|
{
|
||||||
eventArgs.ConnectResult = ConnectResult.Success;
|
eventArgs.ConnectResult = ConnectResult.Success;
|
||||||
@ -273,13 +274,12 @@ void StartServerListening()
|
|||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 连接失败。", InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 连接失败。", InvokeMessageType.Core);
|
||||||
await socket.CloseAsync();
|
await socket.CloseAsync();
|
||||||
}
|
}
|
||||||
Config.ConnectingPlayerCount--;
|
|
||||||
}).OnError(e =>
|
}).OnError(e =>
|
||||||
{
|
{
|
||||||
|
Config.DecrementConnectingPlayerCount();
|
||||||
ConnectEventArgs eventArgs = new(clientip, Config.ServerPort, ConnectResult.CanNotConnect);
|
ConnectEventArgs eventArgs = new(clientip, Config.ServerPort, ConnectResult.CanNotConnect);
|
||||||
FunGameSystem.ServerPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
FunGameSystem.ServerPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
||||||
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(socket, eventArgs);
|
||||||
if (--Config.ConnectingPlayerCount < 0) Config.ConnectingPlayerCount = 0;
|
|
||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 中断连接!", InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 中断连接!", InvokeMessageType.Core);
|
||||||
ServerHelper.Error(e);
|
ServerHelper.Error(e);
|
||||||
});
|
});
|
||||||
|
|||||||
@ -48,9 +48,9 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
protected DataSet _dsUser = new();
|
protected DataSet _dsUser = new();
|
||||||
protected Guid _checkLoginKey = Guid.Empty;
|
protected Guid _checkLoginKey = Guid.Empty;
|
||||||
|
|
||||||
public ServerModel(ISocketListener<T> server, ISocketMessageProcessor socket, bool isDebugMode)
|
public ServerModel(ISocketListener<T> listener, ISocketMessageProcessor socket, bool isDebugMode)
|
||||||
{
|
{
|
||||||
Listener = server;
|
Listener = listener;
|
||||||
Socket = socket;
|
Socket = socket;
|
||||||
DataRequestController = new(this);
|
DataRequestController = new(this);
|
||||||
IsDebugMode = isDebugMode;
|
IsDebugMode = isDebugMode;
|
||||||
|
|||||||
@ -137,7 +137,7 @@ namespace Milimoe.FunGame.Server.Others
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 正在连接的玩家数量
|
/// 正在连接的玩家数量
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static int ConnectingPlayerCount { get; set; } = 0;
|
public static int ConnectingPlayerCount => Math.Max(0, _connectingPlayerCount);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 默认传输字符集
|
/// 默认传输字符集
|
||||||
@ -158,6 +158,36 @@ namespace Milimoe.FunGame.Server.Others
|
|||||||
/// 未Loadmodules时,此属性表示至少需要安装的模组
|
/// 未Loadmodules时,此属性表示至少需要安装的模组
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string[] GameModuleSupported { get; set; } = [];
|
public static string[] GameModuleSupported { get; set; } = [];
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 正在连接的玩家数量
|
||||||
|
/// </summary>
|
||||||
|
private static int _connectingPlayerCount = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 线程安全的递增正在连接的玩家数量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int IncrementConnectingPlayerCount()
|
||||||
|
{
|
||||||
|
return Interlocked.Increment(ref _connectingPlayerCount);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 线程安全的递减正在连接的玩家数量
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int DecrementConnectingPlayerCount()
|
||||||
|
{
|
||||||
|
int original, newValue;
|
||||||
|
do
|
||||||
|
{
|
||||||
|
original = Volatile.Read(ref _connectingPlayerCount);
|
||||||
|
newValue = Math.Max(0, original - 1);
|
||||||
|
} while (Interlocked.CompareExchange(ref _connectingPlayerCount, newValue, original) != original);
|
||||||
|
|
||||||
|
return newValue;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@ -69,7 +69,7 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
|||||||
public async Task<IActionResult> Login([FromBody] LoginDTO dto)
|
public async Task<IActionResult> Login([FromBody] LoginDTO dto)
|
||||||
{
|
{
|
||||||
string msg = "服务器暂时无法处理登录请求。";
|
string msg = "服务器暂时无法处理登录请求。";
|
||||||
Config.ConnectingPlayerCount++;
|
Config.IncrementConnectingPlayerCount();
|
||||||
PayloadModel<DataRequestType> response = new()
|
PayloadModel<DataRequestType> response = new()
|
||||||
{
|
{
|
||||||
Event = "user_login",
|
Event = "user_login",
|
||||||
@ -94,7 +94,7 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
|||||||
// 确认登录
|
// 确认登录
|
||||||
await model.CheckLogin();
|
await model.CheckLogin();
|
||||||
string token = jwtTokenService.GenerateToken(username);
|
string token = jwtTokenService.GenerateToken(username);
|
||||||
Config.ConnectingPlayerCount--;
|
Config.DecrementConnectingPlayerCount();
|
||||||
response.StatusCode = 200;
|
response.StatusCode = 200;
|
||||||
response.Message = "登录成功!";
|
response.Message = "登录成功!";
|
||||||
response.Data = new()
|
response.Data = new()
|
||||||
@ -107,14 +107,14 @@ namespace Milimoe.FunGame.WebAPI.Controllers
|
|||||||
await model.Send(SocketMessageType.Disconnect);
|
await model.Send(SocketMessageType.Disconnect);
|
||||||
}
|
}
|
||||||
|
|
||||||
Config.ConnectingPlayerCount--;
|
Config.DecrementConnectingPlayerCount();
|
||||||
response.Message = msg;
|
response.Message = msg;
|
||||||
response.StatusCode = 401;
|
response.StatusCode = 401;
|
||||||
return Unauthorized(response);
|
return Unauthorized(response);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
Config.ConnectingPlayerCount--;
|
Config.DecrementConnectingPlayerCount();
|
||||||
logger.LogError("Error: {e}", e);
|
logger.LogError("Error: {e}", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -265,7 +265,7 @@ try
|
|||||||
await app.StopAsync();
|
await app.StopAsync();
|
||||||
};
|
};
|
||||||
|
|
||||||
Task order = Task.Factory.StartNew(GetConsoleOrder);
|
Task order = Task.Run(GetConsoleOrder);
|
||||||
|
|
||||||
otherobjs = [app, listener];
|
otherobjs = [app, listener];
|
||||||
FunGameSystem.OnWebAPIStarted(otherobjs);
|
FunGameSystem.OnWebAPIStarted(otherobjs);
|
||||||
@ -281,7 +281,7 @@ async Task GetConsoleOrder()
|
|||||||
{
|
{
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
string order = Console.ReadLine() ?? "";
|
string order = await Console.In.ReadLineAsync() ?? "";
|
||||||
ServerHelper.Type();
|
ServerHelper.Type();
|
||||||
if (order != "")
|
if (order != "")
|
||||||
{
|
{
|
||||||
@ -320,7 +320,7 @@ async Task WebSocketConnectionHandler(HttpContext context)
|
|||||||
|
|
||||||
Guid token = Guid.NewGuid();
|
Guid token = Guid.NewGuid();
|
||||||
ServerWebSocket socket = new(listener, instance, clientip, clientip, token);
|
ServerWebSocket socket = new(listener, instance, clientip, clientip, token);
|
||||||
Config.ConnectingPlayerCount++;
|
Config.IncrementConnectingPlayerCount();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool isConnected = false;
|
bool isConnected = false;
|
||||||
@ -337,6 +337,7 @@ async Task WebSocketConnectionHandler(HttpContext context)
|
|||||||
}
|
}
|
||||||
(isConnected, isDebugMode) = await ConnectController.Connect(listener, socket, token, clientip, objs.Where(o => o.SocketType == SocketMessageType.Connect));
|
(isConnected, isDebugMode) = await ConnectController.Connect(listener, socket, token, clientip, objs.Where(o => o.SocketType == SocketMessageType.Connect));
|
||||||
eventArgs.Success = isConnected;
|
eventArgs.Success = isConnected;
|
||||||
|
Config.DecrementConnectingPlayerCount();
|
||||||
if (isConnected)
|
if (isConnected)
|
||||||
{
|
{
|
||||||
eventArgs.ConnectResult = ConnectResult.Success;
|
eventArgs.ConnectResult = ConnectResult.Success;
|
||||||
@ -354,14 +355,13 @@ async Task WebSocketConnectionHandler(HttpContext context)
|
|||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 连接失败。", InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 连接失败。", InvokeMessageType.Core);
|
||||||
await socket.CloseAsync();
|
await socket.CloseAsync();
|
||||||
}
|
}
|
||||||
Config.ConnectingPlayerCount--;
|
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
Config.DecrementConnectingPlayerCount();
|
||||||
ConnectEventArgs eventArgs = new(clientip, Config.ServerPort, ConnectResult.CanNotConnect);
|
ConnectEventArgs eventArgs = new(clientip, Config.ServerPort, ConnectResult.CanNotConnect);
|
||||||
FunGameSystem.ServerPluginLoader?.OnAfterConnectEvent(context, eventArgs);
|
FunGameSystem.ServerPluginLoader?.OnAfterConnectEvent(context, eventArgs);
|
||||||
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(context, eventArgs);
|
FunGameSystem.WebAPIPluginLoader?.OnAfterConnectEvent(context, eventArgs);
|
||||||
if (--Config.ConnectingPlayerCount < 0) Config.ConnectingPlayerCount = 0;
|
|
||||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 中断连接!", InvokeMessageType.Core);
|
ServerHelper.WriteLine(ServerHelper.MakeClientName(clientip) + " 中断连接!", InvokeMessageType.Core);
|
||||||
ServerHelper.Error(e);
|
ServerHelper.Error(e);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user