using MessengerApi.Model; using MessengerApi.Model.Messages; using portaloggy; namespace MessengerApi.Example { internal class Program { static void Main(string[] args) { var logger = new ConsoleLogger() { IsMessageSeverityColoringEnabled = true}; var httpClient = new HttpClient(); // Client 1 will demonstrate querying approach. var client1 = new QueryClient( new Credentials( "aab8f7e9-ad13-4bf8-bb2e-0cd93d81adc0", "http://localhost:5259"), httpClient, logger); // Client 2 is subscription client waiting for the queries. var client2 = new SubscriptionClient( new Credentials( "8f73f683-7cb3-40df-998e-6e604aef0e53", "http://localhost:5259"), httpClient, logger); var user1 = Guid.Parse("f696442b-e8dc-4074-b34f-94bcece8e74b"); var user2 = Guid.Parse("15d97720-f5b7-47aa-9c1a-71f98b0b9248"); // Subscribe client 2 to questions. var client2Subscription = client2.Subscribe("TEST"); client2Subscription.OnMessage += (s, m) => { logger.Info($"Received subscribed message - {m.Payload}"); client2.SendMessage(new OutboxMessage { ToUserId = m.Sender, Payload = "ANSWER", PayloadType = m.PayloadType }); }; // Demonstrate query pipeline. Client 1 sends query and waits for response. // Client 2 is subscribed to those messages and will send an answer right away. var answer = client1.Query(new OutboxMessage { ToUserId = user2, PayloadType = "TEST", Payload = "QUESTION" }).GetAwaiter().GetResult(); logger.Info($"Received answer message to my query with payload: {answer.Payload}."); } } }