mirror of
https://github.com/project-redbud/FunGame-Core.git
synced 2025-12-05 16:16:33 +00:00
提供底层Connect和Disconnect (#52)
This commit is contained in:
parent
e4aef07792
commit
3825780bd4
@ -204,13 +204,7 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
{
|
{
|
||||||
return type switch
|
return type switch
|
||||||
{
|
{
|
||||||
DataRequestType.RunTime_Connect => DataRequestSet.RunTime_Connect,
|
|
||||||
DataRequestType.RunTime_Reg => DataRequestSet.RunTime_Reg,
|
|
||||||
DataRequestType.RunTime_CheckReg => DataRequestSet.RunTime_CheckReg,
|
|
||||||
DataRequestType.RunTime_Login => DataRequestSet.RunTime_Login,
|
|
||||||
DataRequestType.RunTime_CheckLogin => DataRequestSet.RunTime_CheckLogin,
|
|
||||||
DataRequestType.RunTime_Logout => DataRequestSet.RunTime_Logout,
|
DataRequestType.RunTime_Logout => DataRequestSet.RunTime_Logout,
|
||||||
DataRequestType.RunTime_Disconnect => DataRequestSet.RunTime_Disconnect,
|
|
||||||
DataRequestType.Main_GetNotice => DataRequestSet.Main_GetNotice,
|
DataRequestType.Main_GetNotice => DataRequestSet.Main_GetNotice,
|
||||||
DataRequestType.Main_CreateRoom => DataRequestSet.Main_CreateRoom,
|
DataRequestType.Main_CreateRoom => DataRequestSet.Main_CreateRoom,
|
||||||
DataRequestType.Main_UpdateRoom => DataRequestSet.Main_UpdateRoom,
|
DataRequestType.Main_UpdateRoom => DataRequestSet.Main_UpdateRoom,
|
||||||
@ -219,6 +213,7 @@ namespace Milimoe.FunGame.Core.Api.Transmittal
|
|||||||
DataRequestType.Main_MatchRoom => DataRequestSet.Main_MatchRoom,
|
DataRequestType.Main_MatchRoom => DataRequestSet.Main_MatchRoom,
|
||||||
DataRequestType.Main_Chat => DataRequestSet.Main_Chat,
|
DataRequestType.Main_Chat => DataRequestSet.Main_Chat,
|
||||||
DataRequestType.Reg_GetRegVerifyCode => DataRequestSet.Reg_GetRegVerifyCode,
|
DataRequestType.Reg_GetRegVerifyCode => DataRequestSet.Reg_GetRegVerifyCode,
|
||||||
|
DataRequestType.Login_Login => DataRequestSet.Login_Login,
|
||||||
DataRequestType.Login_GetFindPasswordVerifyCode => DataRequestSet.Login_GetFindPasswordVerifyCode,
|
DataRequestType.Login_GetFindPasswordVerifyCode => DataRequestSet.Login_GetFindPasswordVerifyCode,
|
||||||
DataRequestType.Login_UpdatePassword => DataRequestSet.Login_UpdatePassword,
|
DataRequestType.Login_UpdatePassword => DataRequestSet.Login_UpdatePassword,
|
||||||
DataRequestType.Room_GetRoomSettings => DataRequestSet.Room_GetRoomSettings,
|
DataRequestType.Room_GetRoomSettings => DataRequestSet.Room_GetRoomSettings,
|
||||||
|
|||||||
@ -57,6 +57,84 @@ namespace Milimoe.FunGame.Core.Controller
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 连接服务器
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ip"></param>
|
||||||
|
/// <param name="port"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public ConnectResult Connect(string ip, int port)
|
||||||
|
{
|
||||||
|
if (!BeforeConnect())
|
||||||
|
{
|
||||||
|
return ConnectResult.ConnectFailed;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConnectResult result = ConnectResult.Success;
|
||||||
|
string msg = "";
|
||||||
|
string servername = "";
|
||||||
|
string notice = "";
|
||||||
|
|
||||||
|
// 检查服务器IP地址和端口是否正确
|
||||||
|
if (ip == "" || port <= 0)
|
||||||
|
{
|
||||||
|
(ip, port) = GetServerAddress();
|
||||||
|
if (ip == "" || port <= 0)
|
||||||
|
{
|
||||||
|
result = ConnectResult.FindServerFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (result == ConnectResult.Success)
|
||||||
|
{
|
||||||
|
// 与服务器建立连接
|
||||||
|
_Socket?.Close();
|
||||||
|
_Socket = Socket.Connect(ip, port);
|
||||||
|
if (_Socket != null && _Socket.Connected)
|
||||||
|
{
|
||||||
|
if (_Socket.Send(SocketMessageType.Connect) == SocketResult.Success)
|
||||||
|
{
|
||||||
|
SocketObject[] objs = _Socket.ReceiveArray();
|
||||||
|
foreach (SocketObject obj in objs)
|
||||||
|
{
|
||||||
|
if (obj.SocketType == SocketMessageType.Connect)
|
||||||
|
{
|
||||||
|
bool success = obj.GetParam<bool>(0);
|
||||||
|
msg = obj.GetParam<string>(1) ?? "";
|
||||||
|
if (success)
|
||||||
|
{
|
||||||
|
_Socket.Token = obj.GetParam<Guid>(2);
|
||||||
|
servername = obj.GetParam<string>(3) ?? "";
|
||||||
|
notice = obj.GetParam<string>(4) ?? "";
|
||||||
|
StartReceiving();
|
||||||
|
Task.Run(() =>
|
||||||
|
{
|
||||||
|
while (true)
|
||||||
|
{
|
||||||
|
if (_IsReceiving)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result = ConnectResult.ConnectFailed;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else _Socket?.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
object[] ConnectArgs = new object[] { result, msg, servername, notice };
|
||||||
|
AfterConnect(ConnectArgs);
|
||||||
|
|
||||||
|
// 允许修改数组中的result,强行改变连接的结果
|
||||||
|
return (ConnectResult)ConnectArgs[0];
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取服务器地址
|
/// 获取服务器地址
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -85,11 +163,26 @@ namespace Milimoe.FunGame.Core.Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 客户端需要自行实现连接服务器的事务
|
/// 此方法将在连接服务器前触发<para/>
|
||||||
|
/// 客户端可以重写此方法
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>连接结果</returns>
|
/// <returns>false:中止连接</returns>
|
||||||
public abstract ConnectResult Connect();
|
public virtual bool BeforeConnect()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 此方法将在连接服务器后触发(Connect结果返回前)<para/>
|
||||||
|
/// 客户端可以重写此方法
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="ConnectArgs">连接服务器后返回的一些数据,可以使用也可以修改它们</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public virtual void AfterConnect(object[] ConnectArgs)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 客户端需要自行实现自动登录的事务
|
/// 客户端需要自行实现自动登录的事务
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -218,6 +311,7 @@ namespace Milimoe.FunGame.Core.Controller
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case SocketMessageType.Disconnect:
|
case SocketMessageType.Disconnect:
|
||||||
|
Close();
|
||||||
SocketHandler_Disconnect(ServerMessage);
|
SocketHandler_Disconnect(ServerMessage);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@ -34,6 +34,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
public const string Socket = "Socket";
|
public const string Socket = "Socket";
|
||||||
public const string Unknown = "Unknown";
|
public const string Unknown = "Unknown";
|
||||||
public const string DataRequest = "DataRequest";
|
public const string DataRequest = "DataRequest";
|
||||||
|
public const string Connect = "Connect";
|
||||||
public const string Disconnect = "Disconnect";
|
public const string Disconnect = "Disconnect";
|
||||||
public const string HeartBeat = "HeartBeat";
|
public const string HeartBeat = "HeartBeat";
|
||||||
public const string ForceLogout = "ForceLogout";
|
public const string ForceLogout = "ForceLogout";
|
||||||
@ -52,13 +53,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
/**
|
/**
|
||||||
* RunTime
|
* RunTime
|
||||||
*/
|
*/
|
||||||
public const string RunTime_Connect = "RunTime::Connect";
|
|
||||||
public const string RunTime_Reg = "RunTime::Reg";
|
|
||||||
public const string RunTime_CheckReg = "RunTime::CheckReg";
|
|
||||||
public const string RunTime_Login = "RunTime::Login";
|
|
||||||
public const string RunTime_CheckLogin = "RunTime::CheckLogin";
|
|
||||||
public const string RunTime_Logout = "RunTime::Logout";
|
public const string RunTime_Logout = "RunTime::Logout";
|
||||||
public const string RunTime_Disconnect = "RunTime::Disconnect";
|
|
||||||
/**
|
/**
|
||||||
* Main
|
* Main
|
||||||
*/
|
*/
|
||||||
@ -76,6 +71,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
/**
|
/**
|
||||||
* Login
|
* Login
|
||||||
*/
|
*/
|
||||||
|
public const string Login_Login = "Login::Login";
|
||||||
public const string Login_GetFindPasswordVerifyCode = "Login::GetFindPasswordVerifyCode";
|
public const string Login_GetFindPasswordVerifyCode = "Login::GetFindPasswordVerifyCode";
|
||||||
public const string Login_UpdatePassword = "Login::UpdatePassword";
|
public const string Login_UpdatePassword = "Login::UpdatePassword";
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -59,6 +59,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
{
|
{
|
||||||
Unknown,
|
Unknown,
|
||||||
DataRequest,
|
DataRequest,
|
||||||
|
Connect,
|
||||||
Disconnect,
|
Disconnect,
|
||||||
HeartBeat,
|
HeartBeat,
|
||||||
ForceLogout,
|
ForceLogout,
|
||||||
@ -72,13 +73,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
public enum DataRequestType
|
public enum DataRequestType
|
||||||
{
|
{
|
||||||
UnKnown,
|
UnKnown,
|
||||||
RunTime_Connect,
|
|
||||||
RunTime_Reg,
|
|
||||||
RunTime_CheckReg,
|
|
||||||
RunTime_Login,
|
|
||||||
RunTime_CheckLogin,
|
|
||||||
RunTime_Logout,
|
RunTime_Logout,
|
||||||
RunTime_Disconnect,
|
|
||||||
Main_GetNotice,
|
Main_GetNotice,
|
||||||
Main_CreateRoom,
|
Main_CreateRoom,
|
||||||
Main_UpdateRoom,
|
Main_UpdateRoom,
|
||||||
@ -87,6 +82,7 @@ namespace Milimoe.FunGame.Core.Library.Constant
|
|||||||
Main_MatchRoom,
|
Main_MatchRoom,
|
||||||
Main_Chat,
|
Main_Chat,
|
||||||
Reg_GetRegVerifyCode,
|
Reg_GetRegVerifyCode,
|
||||||
|
Login_Login,
|
||||||
Login_GetFindPasswordVerifyCode,
|
Login_GetFindPasswordVerifyCode,
|
||||||
Login_UpdatePassword,
|
Login_UpdatePassword,
|
||||||
Room_GetRoomSettings,
|
Room_GetRoomSettings,
|
||||||
|
|||||||
@ -257,6 +257,7 @@ namespace Milimoe.FunGame.Core.Service
|
|||||||
return type switch
|
return type switch
|
||||||
{
|
{
|
||||||
SocketMessageType.DataRequest => SocketSet.DataRequest,
|
SocketMessageType.DataRequest => SocketSet.DataRequest,
|
||||||
|
SocketMessageType.Connect => SocketSet.Connect,
|
||||||
SocketMessageType.Disconnect => SocketSet.Disconnect,
|
SocketMessageType.Disconnect => SocketSet.Disconnect,
|
||||||
SocketMessageType.HeartBeat => SocketSet.HeartBeat,
|
SocketMessageType.HeartBeat => SocketSet.HeartBeat,
|
||||||
SocketMessageType.ForceLogout => SocketSet.ForceLogout,
|
SocketMessageType.ForceLogout => SocketSet.ForceLogout,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user