I'm using streaming approach to emulate real-time communication between server and clients. It works ok when I get stream directly from web api. But when I try to receive messages over azure api management it returns pack of messages for last ~20 minutes. It's web api method:
[HttpGet]
[Route("subscribe/{subscription}")]
public HttpResponseMessage Subscribe(string subscription)
{
PushStreamContent eventStream = new PushStreamContent(delegate (Stream stream, HttpContent content, TransportContext context)
{
Subscribe(subscription, stream);
}, new MediaTypeHeaderValue("text/event-stream"));
HttpResponseMessage message = Request.CreateResponse(HttpStatusCode.OK);
message.Content = eventStream;
return message;
}
And to get stream I send XMLHttpRequest from google chrome console:
var request = new XMLHttpRequest()
request.open('get', 'https://{api}.azure-api.net/subscribe/hi', true)
request.setRequestHeader('Ocp-Apim-Subscription-Key','{subscription_key}')
request.onabort = function() { console.log('abort') }
request.onerror = function() { console.log('error') }
request.onprogress = function(e) { console.log(e) }
request.onload = function() { console.log('done') }
request.send()
So is it possible to configure azure API management somehow to return messages on stream Flush() ?
Not at the moment but we will add support for streaming scenarios soon. We will post the announcement to the update feed.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With