diff --git a/README.md b/README.md index 05c545d..6fa7efb 100644 --- a/README.md +++ b/README.md @@ -19,30 +19,31 @@ Quest support, it can auto discover VRC running on the same local network. ```c# // listen on localhost -new OscQueryServer( +var localHostServer = new OscQueryServer( "HelloWorld", // service name - "127.0.0.1", // ip address for udp and http server - FoundVrcClient, // optional callback on vrc discovery - UpdateAvailableParameters // parameter list callback on vrc discovery + IPAddress.Loopback // ip address for udp and http server ); +localHostServer.FoundVrcClient += FoundVrcClient; // event on vrc discovery +localHostServer.ParameterUpdate += UpdateAvailableParameters; // event on parameter list update // listen for VRC on every network interface (Quest only) -var host = Dns.GetHostEntry(Dns.GetHostName()); +var host = await Dns.GetHostEntryAsync(Dns.GetHostName()); foreach (var ip in host.AddressList) { if (ip.AddressFamily != System.Net.Sockets.AddressFamily.InterNetwork) continue; - var ipAddress = ip.ToString(); - _ = new OscQueryServer( + var server = new OscQueryServer( "HelloWorld", // service name - ipAddress, // ip address for udp and http server - FoundVrcClient, // optional callback on vrc discovery - UpdateAvailableParameters // parameter list callback on vrc discovery + ip ); + + server.FoundVrcClient += FoundVrcClient; // event on vrc discovery + server.ParameterUpdate += UpdateAvailableParameters; // event on parameter list update + server.Start(); } -private static void FoundVrcClient() +private static Task FoundVrcClient(OscQueryServer oscQueryServer, IPEndPoint ipEndPoint) { // stop tasks Task.Delay(1000).Wait(); // wait for tasks to stop @@ -51,12 +52,13 @@ private static void FoundVrcClient() _gameConnection = new OscDuplex( new IPEndPoint(IPAddress.Parse(OscQueryServer.OscIpAddress), OscQueryServer.OscReceivePort), - new IPEndPoint(IPAddress.Parse(OscQueryServer.OscIpAddress), OscQueryServer.OscSendPort) + ipEndPoint) ); Task.Run(ReceiverLoopAsync); + return Task.CompletedTask; } -private static void UpdateAvailableParameters(Dictionary parameterList) +private static Task UpdateAvailableParameters(Dictionary parameterList, string s) { // ran when client connects or optionally when user changes avatar // the parameter values are in their initial state so they are mostly useless @@ -64,9 +66,10 @@ private static void UpdateAvailableParameters(Dictionary parame { Console.WriteLine(parameter.Key); } + return Task.CompletedTask; } -// depending on your OSC library you might want to run this method on avatar change to update your list of available parameters +// depending on your OSC library you may want to run this method on avatar change to update your list of available parameters if (received.Address == "/avatar/change") OscQueryServer.GetParameters();