frnsharp/FRNWebSocket/Program.cs
2024-11-22 16:55:57 +01:00

61 lines
2.2 KiB
C#

using System;
using System.IO;
using System.Threading.Tasks;
using Monoculus;
using NAudio.Wave;
namespace sharpFRN
{
class Program
{
static WebSocketAudioStreamer audioStreamer = new WebSocketAudioStreamer();
static Settings settings = new Settings();
static async Task Main(string[] args)
{
settings = SettingsLoader.Load("settings.json");
audioStreamer.StartWebSocketServerAsync(settings.WebSocketHost);
// Initialize the FRN client
var client = new FRNClient(
host: settings.FRNClient.Host,
port: settings.FRNClient.Port,
callSign: settings.FRNClient.CallSign,
name: settings.FRNClient.Name,
email: settings.FRNClient.Email,
password: settings.FRNClient.Password,
network: settings.FRNClient.Network,
country: settings.FRNClient.Country,
city: settings.FRNClient.City,
locator: settings.FRNClient.Locator,
type: settings.FRNClient.Type,
description: settings.FRNClient.Description
);
client.OnConnect += () => Console.WriteLine("Connected to the server.");
client.OnDisconnect += () => Console.WriteLine("Disconnected from the server.");
client.OnLogin += () => Console.WriteLine("Logged in successfully.");
client.OnMessageReceived += (message) => Console.WriteLine($"Message received: {message}");
client.OnClientListReceived += (clients) =>
{
Console.WriteLine("Client list updated:");
foreach (var c in clients)
{
Console.WriteLine($"- {c.CallsignAndUser} ({c.ID})");
}
};
client.OnVoiceDataReceived += (voiceData, clientIndex) =>
{
Console.WriteLine($"Voice data received at index {clientIndex}");
// Decode and play the voice data chunk
//PlayGSMChunk(voiceData);
audioStreamer.PlayGSMChunk(voiceData);
};
await client.RunAsync();
}
}
}