tesses-rpc/ServerExample/Program.cs

49 lines
1.8 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.WebServer;
using Tesses.RPC;
using CommonExample;
RouteServer svr=new RouteServer();
svr.Add("/",async(e)=>{
Console.WriteLine("Entered");
RPCServer ews=new RPCServer((mhandler)=>{
JsonMessager<MessageType,IMessage> messager=new JsonMessager<MessageType,IMessage>(mhandler);
messager.Register<Timestamp>(MessageType.Time,(m)=>{
Console.WriteLine($"Client sent time: {m.Data.Time}");
if(m.NeedReply)
{
Console.WriteLine("REPLY");
m.Reply(new Timestamp(){Time = m.Data.Time.AddDays(4)});
}
});
messager.Register<Message>(MessageType.Message,(s)=>{
Console.WriteLine($"Client sent message: {s.Data.Text}");
messager.SendMessage(s.Data);
});
messager.SendMessage(new Timestamp(){Time = DateTime.Now});
messager.SendMessage(new Message(){Text="Howdy"});
});
await e.StartEasyWebSocketConnectionAsync(ews);
});
svr.StartServer(4222);