Пример #1
0
        public static async Task <bool> PostMessage(SSEMessage message)
        {
            Client client;
            var    cnt = _clients.Count();

            if (_clients.TryGetValue(message.clientID, out client))
            {
                try
                {
                    if (message.payload.message == "DUMMY")
                    {
                        client.UpdateAccessTime();
                    }
                    else
                    {
                        var data = JsonConvert.SerializeObject(message.payload);
                        await client.WriteAndSend(data);
                    }
                    return(true);
                }
                catch (HttpException)
                {
                    _RemoveClient(client.id);
                }
                catch (Exception)
                {
                    //also needs to log here
                    _RemoveClient(client.id);
                }

                return(false);
            }
            return(false);
        }
Пример #2
0
        public async Task <HttpResponseMessage> Post([FromBody] SSEMessage message)
        {
            var res = await PostMessage(message);

            if (res)
            {
                var response = Request.CreateResponse(HttpStatusCode.Created);
                return(response);
            }
            return(Request.CreateResponse(HttpStatusCode.NotFound));
        }
Пример #3
0
        private static async Task TryGetAndPostMessages(CancellationToken ct)
        {
            //Demo Test: Generating Random messages at random intervals and send it to clients
            var rnd = new Random();
            await Task.Delay(rnd.Next(1000, 3000), ct);

            if (ct.IsCancellationRequested)
            {
                return;
            }
            var clients = _clients.Values.ToArray();

            Array.ForEach(clients, async client =>
            {
                var msg = new SSEMessage {
                    clientID = client.id, payload = new Payload {
                        message = getQuote()
                    }
                };
                var res = await PostMessage(msg);
            });
        }