using System;
using Whisper.Server;
using Microsoft.Extensions.Hosting;
using System.Net.Sockets;
using System.Buffers.Binary;
using System.Text;
using System.Threading.Tasks;
namespace Whisper
{
class Program
{
static void Main(string[] args)
{
Host
.CreateDefaultBuilder(args)
.UseWhisper(options =>
{
options.OnPackageReceived += (package, session) =>
{
Console.WriteLine(Encoding.UTF8.GetString(package.Body.FirstSpan));
};
options.OnServerReady += () =>
{
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
var message = Encoding.UTF8.GetBytes("Hello World");
var contentLength = message.Length;
byte[] data = new byte[DefaultFormatFixedHeader.Size + contentLength];
var span = new Span<byte>(data);
BinaryPrimitives.WriteInt32BigEndian(span.Slice(4), contentLength);
message.CopyTo(span.Slice(8));
timer.Elapsed += (sender, e) =>
{
using TcpClient client = new TcpClient("localhost", 5000);
NetworkStream stream = client.GetStream();
stream.Write(data, 0, data.Length);
stream.Flush();
Task.Delay(1000).Wait();
};
timer.Start();
};
})
.Build()
.Run();
}
}
}