static void Main(string[] args) { // SERVERS var rpcServer1 = new RPCServer(5001); rpcServer1.SetOnMessageAction(OnMessageAction); var rpcServer2 = new RPCServer(5002); rpcServer2.SetOnMessageAction(OnMessageAction); var rpcServer3 = new RPCServer(5003); rpcServer3.SetOnMessageAction(OnMessageAction); // CLIENTS var rcpServer1Client1 = new RPCClient("localhost", 5002); rcpServer1Client1.SetOnMessageAction(OnMessageAction); var rcpServer1Client2 = new RPCClient("localhost", 5003); rcpServer1Client2.SetOnMessageAction(OnMessageAction); var rcpServer2Client1 = new RPCClient("localhost", 5001); rcpServer2Client1.SetOnMessageAction(OnMessageAction); var rcpServer2Client2 = new RPCClient("localhost", 5003); rcpServer2Client2.SetOnMessageAction(OnMessageAction); var rcpServer3Client1 = new RPCClient("localhost", 5001); rcpServer3Client1.SetOnMessageAction(OnMessageAction); var rcpServer3Client2 = new RPCClient("localhost", 5001); rcpServer3Client2.SetOnMessageAction(OnMessageAction); // SEND MESSAGES rcpServer3Client2.Send((Message message) => { System.Console.WriteLine($"Callback => {message.ToString()}"); }, new Message("show", null, new { Text = "hello world" })); rpcServer1.Dispose(); }