通过 Azure API 管理流式传输
Streaming over Azure API Management
我正在使用流式传输方法来模拟服务器和客户端之间的实时通信。当我直接从网络 api 获取流时,它工作正常。但是,当我尝试通过 azure api 管理接收消息时,它 return 发送了最后约 20 分钟的消息包。
这是网络 api 方法:
[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;
}
为了获取流,我从 google chrome 控制台发送 XMLHttpRequest:
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()
那么是否可以以某种方式将 azure API 管理配置为流 Flush() 上的 return 消息?
目前还没有,但我们会尽快添加对流式传输方案的支持。我们将post公告到update feed。
我正在使用流式传输方法来模拟服务器和客户端之间的实时通信。当我直接从网络 api 获取流时,它工作正常。但是,当我尝试通过 azure api 管理接收消息时,它 return 发送了最后约 20 分钟的消息包。 这是网络 api 方法:
[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;
}
为了获取流,我从 google chrome 控制台发送 XMLHttpRequest:
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()
那么是否可以以某种方式将 azure API 管理配置为流 Flush() 上的 return 消息?
目前还没有,但我们会尽快添加对流式传输方案的支持。我们将post公告到update feed。