[성현모] Socket 응답 추가

This commit is contained in:
SHM
2025-04-22 09:31:05 +09:00
parent 0b69e0a8f7
commit cbd8a29ba8
12 changed files with 119 additions and 59 deletions

View File

@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HubX.Library.Enums
{
public enum EnumResult
{
Success = 1,
Failed = 2,
}
}

View File

@ -1,4 +1,5 @@
using DB.HubXDB;
using HubX.Library.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
@ -9,17 +10,18 @@ namespace HubX.Library.Http.Packet
{
public class Request_InsertUniqueKey
{
public string Identity { get; set; }
public string Identity { get; set; } = string.Empty;
public string? Data1 { get; set; }
public string? Data2 { get; set; }
public string? Data3 { get; set; }
public string? Data4 { get; set; }
public string? Data5 { get; set; }
public string? Data1 { get; set; } = string.Empty;
public string? Data2 { get; set; } = string.Empty;
public string? Data3 { get; set; } = string.Empty;
public string? Data4 { get; set; } = string.Empty;
public string? Data5 { get; set; } = string.Empty;
}
public class Response_InsertUniqueKy
{
public string? Identity { get; set; } = string.Empty;
public string? Result { get; set; } = EnumResult.Success.ToString();
}
}

View File

@ -1,4 +1,5 @@
using DB.HubXDB;
using Azure.Core;
using DB.HubXDB;
using HubX.Library.Http.Packet;
using HubX.Library.Socket.Object;
using HubX.Library.Socket.Session;
@ -15,16 +16,19 @@ namespace HubX.Library.Socket.Packet
public class PacketHandler
{
public static void C2S_INSERT_UniqueKeyHandler(PacketSession session, ArraySegment<byte> buffer)
public static async void C2S_INSERT_UniqueKeyHandler(PacketSession session, ArraySegment<byte> buffer)
{
var recvData = Encoding.UTF8.GetString(buffer);
//json으로 요청인지 확인
bool isJsonRequest = true;
//convert to object
var jsonObject = recvData.ToObject<C2S_INSERT_UniqueKey>();
//json 요청 아닐때 변환
if (jsonObject == null)
{
var recvDataList = recvData.Split(",");
jsonObject = new C2S_INSERT_UniqueKey
{
Identity = recvDataList[0],
@ -34,8 +38,10 @@ namespace HubX.Library.Socket.Packet
Data4 = recvDataList[4],
Data5 = recvDataList[5],
};
isJsonRequest = false;
}
string result = string.Empty;
//insert DB
if(jsonObject != null)
{
@ -47,14 +53,23 @@ namespace HubX.Library.Socket.Packet
request.Data4 = jsonObject.Data4;
request.Data5 = jsonObject.Data5;
SystemX.Core.Communication.Http http = new ();
var res = http.PostJsonAsync<Request_InsertUniqueKey,Response_InsertUniqueKy>("https://127.0.0.1:9000/UniqueKey/InsertUniqueKey", request);
SystemX.Core.Communication.Http http = new();
var res = await http.PostJsonAsync<Request_InsertUniqueKey,Response_InsertUniqueKy>("https://127.0.0.1:9000/UniqueKey/InsertUniqueKey", request);
result = res.ToJson();
//json 요청이 아니면 변환
if (isJsonRequest == false)
{
result = $"{res.Identity},{res.Result}";
}
}
ClientSession clientSession = session as ClientSession;
Client client = clientSession.Client;
if (client == null)
return;
return;
client.Session.Send(Encoding.UTF8.GetBytes(result) ,EnumMessageId.S2C_INSERT_UniqueKey);
}
}
}

View File

@ -49,9 +49,6 @@ namespace HubX.Library.Socket.Packet
void MakePacket<T>(PacketSession session, ArraySegment<byte> buffer, ushort id) where T : new()
{
// T pkt = new T();
//pkt.MergeFrom(buffer.Array, buffer.Offset + 4, buffer.Count - 4);
if (CustomHandler != null)
{
CustomHandler.Invoke(session, buffer, id);

View File

@ -16,21 +16,21 @@ namespace HubX.Library.Socket.Session
public Client Client { get; set; }
public int SessionId { get; set; }
public void Send(IMessage packet)
public void Send(ArraySegment<byte> packet, EnumMessageId resonseMessageId)
{
//string msgName = packet.Descriptor.Name.Replace("_", string.Empty);
//EnumMessageId msgId = (EnumMessageId)Enum.Parse(typeof(EnumMessageId), msgName);
//ushort size = (ushort)packet.CalculateSize();
//byte[] sendBuffer = new byte[size + 4];
//Array.Copy(BitConverter.GetBytes((ushort)(size + 4)), 0, sendBuffer, 0, sizeof(ushort));
//Array.Copy(BitConverter.GetBytes((ushort)msgId), 0, sendBuffer, 2, sizeof(ushort));
//Array.Copy(packet.ToByteArray(), 0, sendBuffer, 4, size);
//Send(new ArraySegment<byte>(sendBuffer));
Log4net.WriteLine($"Send:{Encoding.UTF8.GetString(packet)}", LogType.SOCKET);
ushort size = (ushort)packet.Count;
byte[] sendBuffer = new byte[size + 4];
Array.Copy(BitConverter.GetBytes((ushort)(size + 4)), 0, sendBuffer, 0, sizeof(ushort));
Array.Copy(BitConverter.GetBytes((ushort)resonseMessageId), 0, sendBuffer, 2, sizeof(ushort));
Array.Copy(packet.ToArray(), 0, sendBuffer, 4, size);
Send(new ArraySegment<byte>(sendBuffer));
}
public override void OnConnected(EndPoint endPoint)
{
Log4net.WriteLine($"OnConnected : {endPoint}", LogType.SOCKET);
Log4net.WriteLine($"OnConnected:{endPoint}", LogType.SOCKET);
Client = ObjectManager.Instance.Add<Client>();
{
Client.Session = this;
@ -39,13 +39,13 @@ namespace HubX.Library.Socket.Session
public override void OnRecvPacket(ArraySegment<byte> buffer)
{
Log4net.WriteLine($"OnRecvPacket : {Encoding.UTF8.GetString(buffer)}", LogType.SOCKET);
Log4net.WriteLine($"OnRecvPacket:{Encoding.UTF8.GetString(buffer)}", LogType.SOCKET);
PacketManager.Instance.OnRecvPacket(this, buffer);
}
public override void OnDisconnected(EndPoint endPoint)
{
Log4net.WriteLine($"OnDisconnected : {endPoint}", LogType.SOCKET);
Log4net.WriteLine($"OnDisconnected:{endPoint}", LogType.SOCKET);
}
public override void OnSend(int numOfBytes)