Skip to content

x5qubits/TCPNetworkProtocol

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JHS Network Protocol

JHS Network Protocol is a Event Based TCP Library. It was originally made to be utilized inside Unity3d.

#Server Side Example:

    static void Main(string[] args)
    {
        //Register custom handler for message id 100
        JHSNetworkServer.RegisterHandler(100, TESTMSG_RECIVE); 
        //Start Server
        JHSNetworkServer.Start("0.0.0.0"); 
        
    }
    
    private static void TESTMSG_RECIVE(JHSNetworkMessage netMsg)
    {
        uint connectionId = netMsg.conn.connectionId; // Connection id asigned by server
        ExampleMessage packet = netMsg.ReadMessage<ExampleMessage>(); // Read packet
        if(packet != null)
        {
            netMsg.conn.Send(100, packet); //Echo back the packet 
        }
    }

#Client side Example:

    static void Main(string[] args)
    {
        //Subscribe to on conencted succesfuly to the server.
        JHSNetworkClient.RegisterHandler(InternalMessages.CONNECTED, CONNECTED_TO_SERVER);
        //Subscribe to disconected from server
        JHSNetworkClient.RegisterHandler(InternalMessages.DISCONNECT, DISCONNECTED_PERMANENT);
        //Subscribe to disconected from server but will reconnect n times based on your configs
        JHSNetworkClient.RegisterHandler(InternalMessages.DISCONNECT_BUT_WILL_RECONNECT, DISCONNECTED_FROM_SERVER);
        //Subscirbe to custom packet handler with id 100
        JHSNetworkClient.RegisterHandler(100, OnTestMsgRec);
        //Connect to server
        JHSNetworkClient.Start("127.0.0.1");

        //This program is made for unity 3d so it has a static queue, therefor we need to update that queue in a normal C# application.
        //So we create a timer:
        var timer1 = new Timer();
        timer1.Elapsed += JHSNetworkClientUpdate;
        timer1.Interval = 200; // in miliseconds
        timer1.Start();                
        
    }
    
    private static void CONNECTED_TO_SERVER(JHSNetworkMessage netMsg)
    {
        //Connected to server so we send an example packet
        JHSNetworkClient.Send(100, new ExampleMessage() { op = 1234 });
    }
    
    private static void JHSNetworkClientUpdate(object sender, ElapsedEventArgs e)
    {
        JHSNetworkClient.Update();
    }
    
    private static void OnTestMsgRec(JHSNetworkMessage netMsg)
    {
        ExampleMessage msg = netMsg.ReadMessage<ExampleMessage>();
        if(msg != null)
        {
            //
        }
    }

#Shared Example msg

public class ExampleMessage : JHSMessageBase
{
    public uint op;

    public override void Deserialize(JHSNetworkReader reader)
    {
     op = reader.ReadPackedUInt32();
    }

    public override void Serialize(JHSNetworkWriter writer)
    {
      writer.WritePackedUInt32(op);
    }
}

About

A hand made implementation for net raw sockets.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages