using System.Net; using System.Text; using SystemX.Core.Communication; using WebApi.Project.UniqueKeyApi.Socket.Object; using WebApi.Project.UniqueKeyApi.Socket.Packet; namespace WebApi.Project.UniqueKeyApi.Socket.Session { public class ClientSession : PacketSession { public Client Client { get; set; } public int SessionId { get; set; } public void Send(ArraySegment packet, EnumMessageId resonseMessageId) { LogXnet.WriteLine($"Send:{Encoding.UTF8.GetString(packet)}", LogXLabel.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(sendBuffer)); } public override void OnConnected(EndPoint endPoint) { LogXnet.WriteLine($"OnConnected:{endPoint}", LogXLabel.SOCKET); Client = ObjectManager.Instance.Add(); { Client.Session = this; } } public override void OnRecvPacket(ArraySegment buffer) { LogXnet.WriteLine($"OnRecvPacket:{Encoding.UTF8.GetString(buffer)}", LogXLabel.SOCKET); PacketManager.Instance.OnRecvPacket(this, buffer); } public override void OnDisconnected(EndPoint endPoint) { LogXnet.WriteLine($"OnDisconnected:{endPoint}", LogXLabel.SOCKET); } public override void OnSend(int numOfBytes) { //Console.WriteLine($"Transferred bytes: {numOfBytes}"); } } }