我在同时连接和浏览器限制方面遇到了一个大问题。
在我的页面中,我有一个按钮可以打开带有相机预览的对话框。 预览由 ZoneMinder 提供,ZoneMinder 是一款用于相机管理的 php 开源软件。
https://demo.zoneminder.com/
username: zmuser
password: zmpass
ZoneMinder 提供的 URL 必须用于 IMG 标签(src 属性)。它就像一个 jpg 流。
不幸的是,当我关闭对话框时,浏览器似乎仍然保持连接活动。所以我最多可以打开 6 个预览对话框,因为由于浏览器 http 同时连接限制,第 7 个没有显示。
ZM 的链接是这样的
http://zoneminder/cgi-bin/nph-zms?scale=100&width=640px&height=480px&mode=jpeg&maxfps=30&monitor=3&auth=44917393b19ba0da1331f87e33ea207e&connkey=837202&rand=1612281396
我尝试了从 angular 找到的所有解决方案:
@HostListener('unloaded')
ngOnDestroy()
{
this.data.url = null;
}
previewCamera(camera)
{
this.isAlive = true;
var connection = this.cameraService.buildStreamingLink(parameters);
this.camera_preview_subscription = connection.pipe(timeout(5000)).pipe(takeWhile(() => this.isAlive)).pipe(map((response: any) => response)).subscribe(
data => {
var preview_img_src = data["data"];
var dialog_options = {};
dialog_options["data"]["preview_url"] = preview_img_src;
this._interfaceService.openCustomDialog(CameraPreviewDialog , dialog_options , this.killSubscription.bind(this) );
},
err => {
//some logging
}
);
}
killSubscription()
{
this.isAlive = false;
this.camera_preview_subscription.unsubscribe();
}
不幸的是,这些解决方案似乎都不起作用。
如何强制浏览器终止所有仍处于活动状态的连接?
谢谢。