问题描述
我无法检测到用户何时关闭浏览器。一切在本地环境下都可以正常工作,我可以向客户端发送消息并检测用户断开连接,但是当我将proyect部署到onpromise k8s集群时,除了用户断开连接之外,其他一切都正常。
[HttpGet("listen")]
public async Task Get(CancellationToken cancellationToken)
{
try
{
// handshake
var response = Response;
response.Headers.Add("Content-Type","text/event-stream");
response.Headers.Add("Connection","close");
await response.WriteAsync($"data: __HANDSHAKE\r\r");
response.Body.Flush();
for(int i =0; i< 100 ; i++) {
this.logger.Info($"cancellationToken.IsCancellationRequested {cancellationToken.IsCancellationRequested.ToString()}");
await response.WriteAsync($"data: __HANDSHAKE\r\r");
response.Body.Flush();
Thread.Sleep(3000);
}
// Some other code
}
catch (System.OperationCanceledException)
{
this.logger.Info("Conexion cerrada.");
}
catch (System.Exception ex)
{
this.logger.Info($"{ex.Message} - {ex.StackTrace}");
throw;
}
finally{
this.logger.Info($"FINALLY");
}
}
我设置了一些Nginx入口规则
Nginx.ingress.kubernetes.io/eventsource: "true"
Nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
Nginx.ingress.kubernetes.io/enable-cors: "true"
我的客户有这样的东西:
const sseUrl = URL;
const sse = new EventSource(sseUrl);
sse.onmessage = function (event) {
if (event.data == "__HANDSHAKE") {
loggger.log("Handshaking ...");
return;
}
const message = JSON.parse(event.data);
if (options.onMessages) {
options.onMessages([message]);
}
};
任何评论将不胜感激。谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)