From 1e4940bd4eb366ce0073ed95045dec7cd0d34f94 Mon Sep 17 00:00:00 2001 From: milimoe Date: Tue, 14 Jan 2025 00:27:48 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FunGame.Testing.sln | 12 ++ Library/Main.cs | 6 +- Library/Tests/WebSocketTest.cs | 218 +++++++++++++++++++++++++++------ 3 files changed, 194 insertions(+), 42 deletions(-) diff --git a/FunGame.Testing.sln b/FunGame.Testing.sln index 00a78ff..5e9805f 100644 --- a/FunGame.Testing.sln +++ b/FunGame.Testing.sln @@ -43,6 +43,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FunGame.WebAPI", "..\FunGam {94B564CD-7A1E-4B3C-AF78-23EBCD5D627E} = {94B564CD-7A1E-4B3C-AF78-23EBCD5D627E} EndProjectSection EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OshimaServers", "..\OshimaGameModule\OshimaServers\OshimaServers.csproj", "{C9FF6C3C-D1FC-496D-90EB-3507E6915092}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OshimaMaps", "..\OshimaGameModule\OshimaMaps\OshimaMaps.csproj", "{CDA0BCC1-0097-4D52-9895-A706D0523FBF}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -81,6 +85,14 @@ Global {D74DF3A2-52E7-4C18-8854-81114558D4B2}.Debug|Any CPU.Build.0 = Debug|Any CPU {D74DF3A2-52E7-4C18-8854-81114558D4B2}.Release|Any CPU.ActiveCfg = Release|Any CPU {D74DF3A2-52E7-4C18-8854-81114558D4B2}.Release|Any CPU.Build.0 = Release|Any CPU + {C9FF6C3C-D1FC-496D-90EB-3507E6915092}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {C9FF6C3C-D1FC-496D-90EB-3507E6915092}.Debug|Any CPU.Build.0 = Debug|Any CPU + {C9FF6C3C-D1FC-496D-90EB-3507E6915092}.Release|Any CPU.ActiveCfg = Release|Any CPU + {C9FF6C3C-D1FC-496D-90EB-3507E6915092}.Release|Any CPU.Build.0 = Release|Any CPU + {CDA0BCC1-0097-4D52-9895-A706D0523FBF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CDA0BCC1-0097-4D52-9895-A706D0523FBF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CDA0BCC1-0097-4D52-9895-A706D0523FBF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CDA0BCC1-0097-4D52-9895-A706D0523FBF}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Library/Main.cs b/Library/Main.cs index 1cacc62..23bebd4 100644 --- a/Library/Main.cs +++ b/Library/Main.cs @@ -1,12 +1,8 @@ using Microsoft.Extensions.Logging; using Milimoe.FunGame.Core.Api.Utility; -using Milimoe.FunGame.Core.Entity; -using Milimoe.FunGame.Core.Library.Constant; using Oshima.Core.Controllers; -using Oshima.Core.Utils; using Oshima.FunGame.OshimaModules; -using Oshima.FunGame.OshimaModules.Characters; -using Oshima.FunGame.OshimaModules.Effects.OpenEffects; +using Oshima.FunGame.OshimaServers.Service; _ = new Milimoe.FunGame.Testing.Tests.WebSocketTest(); diff --git a/Library/Tests/WebSocketTest.cs b/Library/Tests/WebSocketTest.cs index b795819..c3d5005 100644 --- a/Library/Tests/WebSocketTest.cs +++ b/Library/Tests/WebSocketTest.cs @@ -5,11 +5,13 @@ using Milimoe.FunGame.Core.Controller; using Milimoe.FunGame.Core.Entity; using Milimoe.FunGame.Core.Library.Common.Network; using Milimoe.FunGame.Core.Library.Constant; +using Oshima.FunGame.OshimaModules; namespace Milimoe.FunGame.Testing.Tests { public class WebSocketTestRunTime : RunTimeController { + public Guid LoginKey { get; set; } = Guid.Empty; public bool Quit { get; set; } = false; public override bool BeforeConnect(ref string addr, ref int port, ArrayList args) @@ -37,7 +39,7 @@ namespace Milimoe.FunGame.Testing.Tests public async Task CheckInput(string str) { - if (WebSocket is null || Quit) + if (HTTPClient is null || Quit) { if (str == "retry") { @@ -52,50 +54,147 @@ namespace Milimoe.FunGame.Testing.Tests } return; } + if (str == "wstest") + { + await HTTPClient.Send(SocketMessageType.AnonymousGameServer, OshimaGameModuleConstant.Anonymous); + } + if (str == "wsclose") + { + await HTTPClient.Send(SocketMessageType.EndGame); + } + if (str == "fungametest") + { + Console.WriteLine(string.Join("\r\n", await HTTPClient.HttpGet>("http://localhost:5000/fungame/test") ?? [])); + } if (str == "quit") { - await WebSocket.Send(SocketMessageType.Disconnect); + Quit = true; + } + if (str == "disc") + { + if (LoginKey != Guid.Empty) await LogOut(); + await HTTPClient.Send(SocketMessageType.Disconnect); } if (str == "login") { - DataRequest request = NewDataRequest(DataRequestType.Login_Login); - request.AddRequestData("username", "mili"); - request.AddRequestData("password", Encryption.HmacSha512("123123", "Mili")); - request.AddRequestData("autokey", ""); - request.AddRequestData("key", Guid.Empty); - await request.SendRequestAsync(); - if (request.Result == RequestResult.Success) + string username = "test"; + string password = "123123"; + await Login(username, password); + } + if (str == "reg") + { + string username = "test2"; + string password = "123123"; + string email = "1231232@qq.com"; + await Reg(username, password, email); + } + if (str == "logout") + { + await LogOut(); + } + } + + public async Task Reg(string username, string password, string email) + { + DataRequest request = NewDataRequest(DataRequestType.Reg_Reg); + request.AddRequestData("username", username); + request.AddRequestData("password", Encryption.HmacSha512(password, username)); + request.AddRequestData("email", email); + request.AddRequestData("verifycode", ""); // 初始验证码为空,请求发送验证码 + await request.SendRequestAsync(); + + if (request.Result == RequestResult.Success) + { + string msg = request.GetResult("msg") ?? ""; + RegInvokeType type = request.GetResult("type"); + if (msg != "") Console.WriteLine(msg); + + if (type == RegInvokeType.InputVerifyCode) { - string msg = request.GetResult("msg") ?? ""; - if (msg != "") + bool success = false; + do { - Console.WriteLine(msg); - } - else - { - Guid loginKey = request.GetResult("key"); - if (loginKey != Guid.Empty) + Console.Write("请输入收到的验证码:"); + string verifycode = Console.ReadLine() ?? ""; + if (verifycode == "q!") { - request = NewDataRequest(DataRequestType.Login_Login); - request.AddRequestData("username", "username"); - request.AddRequestData("password", Encryption.HmacSha512("password", "username")); - request.AddRequestData("autokey", ""); - request.AddRequestData("key", loginKey); - await request.SendRequestAsync(); - if (request.Result == RequestResult.Success) + Console.WriteLine("取消注册操作。"); + break; + } + request = NewDataRequest(DataRequestType.Reg_Reg); + request.AddRequestData("username", username); + request.AddRequestData("password", Encryption.HmacSha512(password, username)); + request.AddRequestData("email", email); + request.AddRequestData("verifycode", verifycode); + await request.SendRequestAsync(); + + if (request.Result == RequestResult.Success) + { + msg = request.GetResult("msg") ?? ""; + success = request.GetResult("success"); + if (msg != "") Console.WriteLine(msg); + } + else + { + Console.WriteLine("请求服务器失败!"); + } + } while (!success); + } + else if (type == RegInvokeType.DuplicateUserName) + { + Console.WriteLine("用户名已被注册!"); + } + else if (type == RegInvokeType.DuplicateEmail) + { + Console.WriteLine("邮箱已被注册!"); + } + } + else + { + Console.WriteLine("注册请求失败!"); + } + } + + public async Task Login(string username, string password) + { + DataRequest request = NewDataRequest(DataRequestType.Login_Login); + request.AddRequestData("username", username); + request.AddRequestData("password", Encryption.HmacSha512(password, username)); + request.AddRequestData("autokey", ""); + request.AddRequestData("key", Guid.Empty); + await request.SendRequestAsync(); + if (request.Result == RequestResult.Success) + { + string msg = request.GetResult("msg") ?? ""; + if (msg != "") + { + Console.WriteLine(msg); + } + else + { + Guid loginKey = request.GetResult("key"); + if (loginKey != Guid.Empty) + { + request = NewDataRequest(DataRequestType.Login_Login); + request.AddRequestData("username", "username"); + request.AddRequestData("password", Encryption.HmacSha512("password", "username")); + request.AddRequestData("autokey", ""); + request.AddRequestData("key", loginKey); + await request.SendRequestAsync(); + if (request.Result == RequestResult.Success) + { + msg = request.GetResult("msg") ?? ""; + if (msg != "") { - msg = request.GetResult("msg") ?? ""; - if (msg != "") + Console.WriteLine(msg); + } + else + { + User? user = request.GetResult("user"); + if (user != null) { - Console.WriteLine(msg); - } - else - { - User? user = request.GetResult("user"); - if (user != null) - { - Console.WriteLine("登录用户完成:" + user.Username); - } + Console.WriteLine("登录用户完成:" + user.Username); + LoginKey = loginKey; } } } @@ -104,9 +203,44 @@ namespace Milimoe.FunGame.Testing.Tests } } + public async Task LogOut() + { + DataRequest request = NewDataRequest(DataRequestType.RunTime_Logout); + request.AddRequestData("key", LoginKey); + await request.SendRequestAsync(); + + if (request.Result == RequestResult.Success) + { + string msg = request.GetResult("msg") ?? ""; + Guid key = request.GetResult("key"); + Console.WriteLine(msg); + if (key != Guid.Empty) + { + LoginKey = Guid.Empty; + Console.WriteLine("退出登录成功!"); + } + else + { + Console.WriteLine("退出登录失败!"); + } + } + else + { + Console.WriteLine("退出登录请求失败!"); + } + } + public override void Error(Exception e) { Console.WriteLine(e.ToString()); + TaskUtility.NewTask(async () => + { + if (HTTPClient != null) + { + await HTTPClient.Send(SocketMessageType.Disconnect); + Close_WebSocket(); + } + }); } public override void WritelnSystemInfo(string msg) @@ -116,13 +250,23 @@ namespace Milimoe.FunGame.Testing.Tests protected override void SocketHandler_Disconnect(SocketObject ServerMessage) { - Quit = true; + Console.WriteLine("断开服务器连接成功"); } protected override void SocketHandler_HeartBeat(SocketObject ServerMessage) { Console.WriteLine("服务器连接成功"); } + + protected override void SocketHandler_AnonymousGameServer(SocketObject ServerMessage) + { + Dictionary data = ServerMessage.GetParam>(0) ?? []; + if (data.Count > 0) + { + string msg = NetworkUtility.JsonDeserializeFromDictionary(data, "msg") ?? ""; + if (msg != "") Console.WriteLine(msg); + } + } } public class WebSocketTest @@ -138,7 +282,7 @@ namespace Milimoe.FunGame.Testing.Tests { if (str == "quit") { - Console.WriteLine("断开服务器连接成功!"); + Console.WriteLine("退出ws测试!"); Console.ReadLine(); } });