tesses-rpc/ClientExample/Program.cs

47 lines
1.6 KiB
C#

/*
Tesses.RPC A simple RPC library for .NET
Copyright (C) 2023 Mike Nolan
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
using Tesses.RPC;
using CommonExample;
JsonMessager<MessageType,IMessage>? messager=null;
var msghndlr=new WebSocketClientMessageHandler("ws://localhost:4222",()=>{
if(messager == null) return;
Thread.Sleep(500);
messager.SendMessage<Timestamp>(new Timestamp(){Time=new DateTime(1992,8,16)},(t)=>{
Console.WriteLine($"Demi Lovato was born on{t.Time.ToShortDateString()}");
});
while(true)
{
string? text=Console.ReadLine();
if(!string.IsNullOrWhiteSpace(text))
{
messager.SendMessage(new Message{Text = text});
}
}
});
messager = new JsonMessager<MessageType, IMessage>(msghndlr);
messager.Register<Message>(MessageType.Message,(m)=>{
Console.WriteLine($"Server sent message: {m.Data.Text}");
});
messager.Register<Timestamp>(MessageType.Time,(m)=>{
Console.WriteLine($"Server sent time: {m.Data.Time}");
});
msghndlr.Connect();