static void Main() { VRpcListener listener = new VRpcListener(IPAddress.Any, 1234); listener.Start(); Thread.Sleep(-1); }
static async Task Main() { Console.Title = "Сервер"; Process.GetCurrentProcess().PriorityClass = ProcessPriorityClass.AboveNormal; Thread.CurrentThread.Priority = ThreadPriority.BelowNormal; RpcInitializer.Initialize(_memoryManager); using (var listener = new VRpcListener(IPAddress.Any, Port)) { listener.ConfigureService(ioc => { ioc.AddLogging(loggingBuilder => { loggingBuilder .AddConsole() .AddDebug(); }); ioc.AddSingleton(new Program()); }); Console.CancelKeyPress += (_, e) => { e.Cancel = true; lock (_conLock) { Console.WriteLine("Stopping..."); } listener.BeginShutdown(TimeSpan.FromSeconds(3), "Пользователь нажал Ctrl+C"); }; listener.ClientConnected += Listener_ClientConnected; listener.ClientDisconnected += Listener_ClientDisconnected; //var lt = listener.ServiceProvider.GetRequiredService<IHostApplicationLifetime>(); await listener.RunAsync(); //listener.Start(); //Console.Clear(); //long prev = 0; //var sw = Stopwatch.StartNew(); //while (!listener.Completion.IsCompleted) //{ // Thread.Sleep(1000); // long elapsedMs = sw.ElapsedMilliseconds; // long rCount = Interlocked.Read(ref ReqCount); // ulong reqPerSecond = unchecked((ulong)(rCount - prev)); // prev = rCount; // sw.Restart(); // var reqPerSec = (int)Math.Round(reqPerSecond * 1000d / elapsedMs); // ToConsole(Interlocked.Read(ref _connections), reqPerSec, ReqCount); //} //ToConsole(0, 0, 0); } }
public void TestNotification() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); iface.Notify(123); }
public void TestSumResult() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); int sum = iface.GetSum(1, 2); Assert.Equal(3, sum); }
public async Task TestNotificationAsync() { const int port = 1008; using var listener = new VRpcListener(IPAddress.Any, port); listener.Start(); using var cli = new VRpcClient("127.0.0.1", port, false, true); var iface = cli.GetProxy <IServerTestController>(); await iface.NotifyAsync(123); }
public void TestAsyncCallback() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); string selfEcho = iface.MakeAsyncCallback("qwerty"); Assert.Equal("qwerty", selfEcho); }
public async Task TestNullStringAsync() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); string value = await iface.GetNullStringAsync(); Assert.Null(value); }
public void TestStringResult() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); string value = iface.GetString(); Assert.Equal("OK", value); }
public async Task TestSumAsync() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); int sum = await iface.GetSumAsync(1, 2); Assert.AreEqual(3, sum); }
static void Main() { var listener = VRpcListener.StartNew(IPAddress.Any); var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); iface.GetSum(1, 2); iface.GetSum(1, 2); iface.GetSum(1, 2); Thread.Sleep(-1); }
public void TestSumValueTask() { const int port = 1003; using var listener = new VRpcListener(IPAddress.Any, port); listener.Start(); using var cli = new VRpcClient("127.0.0.1", port, false, true); var iface = cli.GetProxy <IServerTestController>(); int sum = iface.GetSum2(1, 2); Assert.Equal(3, sum); }
public async Task TestInvalidRequest() { var listener = VRpcListener.StartNew(IPAddress.Any); var ws = new DanilovSoft.WebSockets.ClientWebSocket(); await ws.ConnectAsync(new Uri($"ws://*****:*****@"{""jsonrpc"": ""2.0"", ""method"": 1, ""params"": ""bar""}"), WebSocketMessageType.Text, true, default); var buf = new byte[1024]; var m = await ws.ReceiveAsync(buf, default); Assert.AreEqual("Parse error (-32700)", m.CloseStatusDescription); }
public void TestNullStringResult() { const int port = 1005; using var listener = new VRpcListener(IPAddress.Any, port); listener.Start(); using var cli = new VRpcClient("127.0.0.1", port, false, true); var iface = cli.GetProxy <IServerTestController>(); string value = iface.GetNullString(); Assert.Null(value); }
public void TestNotificationCallback() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var mre = new ManualResetEventSlim(false); cli.ConfigureService(x => x.AddSingleton(mre)); var iface = cli.GetProxy <IServerTestController>(); iface.NotifyCallback(123); Assert.True(mre.Wait(30_000)); }
public void TestInternalError() { var listener = VRpcListener.StartNew(IPAddress.Any); var client = new VRpcClient("localhost", listener.Port, false, true); try { client.GetProxy <IServerTestController>().JTestInternalError(); } catch (VRpcInternalErrorException) { return; } Assert.Fail(); }
public async Task TestAsyncVoid() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, false); var iface = cli.GetProxy <IServerTestController>(); cli.Connect(); var sw = Stopwatch.StartNew(); await iface.Test2Async(); Assert.True(sw.ElapsedMilliseconds >= 500); }
public void TestMethodNotFound() { var listener = VRpcListener.StartNew(IPAddress.Any); var client = new VRpcClient("localhost", listener.Port, false, true); try { client.GetProxy <IServerTestController>().JNotExistedMethod(); } catch (VRpcMethodNotFoundException) { return; } Assert.Fail(); }
public void TestException() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); try { iface.TestException("проверка"); } catch (VRpcBadRequestException ex) { Assert.Equal("проверка", ex.Message); } }
public void TestVoid() { const int port = 1000; using var listener = new VRpcListener(IPAddress.Any, port); listener.Start(); using var cli = new VRpcClient("127.0.0.1", port, false, false); var iface = cli.GetProxy <IServerTestController>(); cli.Connect(); var sw = Stopwatch.StartNew(); iface.TestDelay(); Assert.True(sw.ElapsedMilliseconds >= 500); }
public void TestMethodNotFound() { using var listener = new VRpcListener(IPAddress.Any); listener.Start(); using var cli = new VRpcClient("127.0.0.1", listener.Port, false, true); var iface = cli.GetProxy <IServerTestController>(); try { iface.NotFoundMethod(); Assert.True(false); } catch (VRpcException ex) { } }
static void Main() { VRpcListener listener = new VRpcListener(IPAddress.Any, 1234); listener.Start(); int count = GetConnectionsCount(); _clients = new VRpcClient[count]; ThreadPool.QueueUserWorkItem(async delegate { for (int i = 0; i < count; i++) { _clients[i] = CreateClient(); ThreadPool.UnsafeQueueUserWorkItem(s => ThreadEntry(s), i); } while (true) { await Task.Delay(200); var cli = _clients[new Random().Next(_clients.Length)]; if (cli.State == VRpcState.Open) { var result = cli.Shutdown(TimeSpan.Zero, "Провоцируем обрыв"); cli.Dispose(); } //cli.Dispose(); } }); Console.Write("Connections Count: "); var pos = Console.CursorLeft; while (true) { Console.CursorLeft = pos; string sCount = Volatile.Read(ref _connectionsCount).ToString(); Console.Write(sCount.PadRight(10)); Console.CursorLeft = pos + sCount.Length; Thread.Sleep(200); } }
public async Task MethodNotFoundTest() { VRpcListener listener = new VRpcListener(IPAddress.Any); listener.Start(); var ws = new DanilovSoft.WebSockets.ClientWebSocket(); await ws.ConnectAsync(new Uri($"ws://*****:*****@"{""jsonrpc"": ""2.0"", ""method"": ""foobar"", ""id"": ""1""}"), WebSocketMessageType.Text, true, default); byte[] buf = new byte[1024]; var m = await ws.ReceiveAsync(buf, default); string response = Encoding.UTF8.GetString(buf.AsSpan(0, m.Count)); //var dto = JsonSerializer.Deserialize<ErrorResponse>(response); Assert.Equal("Parse error (-32700)", m.CloseStatusDescription); }
static async Task Main() { var listener = new VRpcListener(IPAddress.Any, 1234); listener.Start(); var client = new VRpcClient("localhost", port: 1234, ssl: false, allowAutoConnect: true); client.Connect(); var proxy = client.GetProxy <IBenchmark>(); while (true) { try { proxy.VoidOneArg(123); } catch (VRpcBadRequestException ex) { } } }