Add Multiple transports system, begin work on WebSockets

This commit is contained in:
Li 2022-11-16 01:59:32 +13:00
parent e869a23463
commit e74f66a439
22 changed files with 3752 additions and 3301 deletions

View file

@ -0,0 +1,38 @@
using HISP.Security;
using HISP.Util;
using System.Text;
namespace HISP.Server.Network
{
public class XmlSocket : Transport
{
public override void ProcessReceivedPackets(int available, byte[] buffer)
{
// In XmlSocket Packets are terminates by 0x00 so we have to read until we receive that terminator
for (int i = 0; i < available; i++)
{
currentPacket.Add(buffer[i]);
if (buffer[i] == PacketBuilder.PACKET_TERMINATOR) // Read until \0...
{
onReceiveCallback(currentPacket.ToArray());
currentPacket.Clear();
}
}
// Handle XMLSocket Policy File
if (Helper.ByteArrayStartsWith(buffer, Encoding.UTF8.GetBytes("<policy-file-request/>")))
{
this.Send(CrossDomainPolicy.GetPolicyFile());
}
}
public override string Name
{
get
{
return "XmlSocket";
}
}
}
}