77namespace BootstrapBlazor . Components ;
88
99/// <summary>
10- /// 海康威视网络摄像机组件 (Websdk Plugin 插件版本)
10+ /// 海康威视网络摄像机组件 (WebSdk Plugin 插件版本)
1111/// </summary>
1212[ JSModuleAutoLoader ( "./_content/BootstrapBlazor.HikVision/Components/HikVisionWebPlugin.razor.js" , JSObjectReference = true ) ]
1313public partial class HikVisionWebPlugin
@@ -37,10 +37,10 @@ public partial class HikVisionWebPlugin
3737 public string ? Password { get ; set ; }
3838
3939 /// <summary>
40- /// 获得/设置 网络摄像机 登录类型 默认值 <see cref="LoginType .Http"/>
40+ /// 获得/设置 网络摄像机 登录类型 默认值 <see cref="HikVisionLoginType .Http"/>
4141 /// </summary>
4242 [ Parameter ]
43- public LoginType LoginType { get ; set ; }
43+ public HikVisionLoginType LoginType { get ; set ; }
4444
4545 /// <summary>
4646 /// 获得/设置 视频图像窗口宽度 默认值 500px
@@ -64,13 +64,19 @@ public partial class HikVisionWebPlugin
6464 /// 获得/设置 登录成功后回调方法
6565 /// </summary>
6666 [ Parameter ]
67- public Func < Task > ? OnLoginedAsync { get ; set ; }
67+ public Func < Task > ? OnLoginAsync { get ; set ; }
68+
69+ /// <summary>
70+ /// 获得/设置 停止预览后回调方法
71+ /// </summary>
72+ [ Parameter ]
73+ public Func < HikVisionChannel , Task > ? OnGetChannelsAsync { get ; set ; }
6874
6975 /// <summary>
7076 /// 获得/设置 注销成功后回调方法
7177 /// </summary>
7278 [ Parameter ]
73- public Func < Task > ? OnLogoutedAsync { get ; set ; }
79+ public Func < Task > ? OnLogoutAsync { get ; set ; }
7480
7581 /// <summary>
7682 /// 获得/设置 开始预览后回调方法
@@ -95,14 +101,14 @@ public partial class HikVisionWebPlugin
95101 . Build ( ) ;
96102
97103 /// <summary>
98- /// 获得 Websdk 插件是否初始化成功
104+ /// 获得 Web sdk 插件是否初始化成功
99105 /// </summary>
100106 public bool Inited { get ; private set ; }
101107
102108 /// <summary>
103109 /// 获得 是否已登录
104110 /// </summary>
105- public bool IsLogined { get ; private set ; }
111+ public bool IsLogin { get ; private set ; }
106112
107113 /// <summary>
108114 /// 获得 是否正在实时预览
@@ -129,22 +135,22 @@ protected override void OnParametersSet()
129135 /// <param name="password"></param>
130136 /// <param name="loginType"></param>
131137 /// <returns></returns>
132- public async Task < bool > Login ( string ip , int port , string userName , string password , LoginType loginType = LoginType . Http )
138+ public async Task < bool > Login ( string ip , int port , string userName , string password , HikVisionLoginType loginType = HikVisionLoginType . Http )
133139 {
134140 ThrowIfNotInited ( ) ;
135- IsLogined = await InvokeAsync < bool ? > ( "login" , Id , ip , port , userName , password , ( int ) loginType ) ?? false ;
136- if ( IsLogined )
141+ IsLogin = await InvokeAsync < bool ? > ( "login" , Id , ip , port , userName , password , ( int ) loginType ) ?? false ;
142+ if ( IsLogin )
137143 {
138- await TriggerLogined ( ) ;
144+ await TriggerLogin ( ) ;
139145 }
140- return IsLogined ;
146+ return IsLogin ;
141147 }
142148
143- private async Task TriggerLogined ( )
149+ private async Task TriggerLogin ( )
144150 {
145- if ( OnLoginedAsync != null )
151+ if ( OnLoginAsync != null )
146152 {
147- await OnLoginedAsync ( ) ;
153+ await OnLoginAsync ( ) ;
148154 }
149155 }
150156
@@ -154,30 +160,40 @@ private async Task TriggerLogined()
154160 /// <returns></returns>
155161 public async Task Logout ( )
156162 {
157- if ( IsLogined )
163+ if ( IsLogin )
158164 {
159165 await InvokeVoidAsync ( "logout" , Id ) ;
160166 }
161167 IsRealPlaying = false ;
162- IsLogined = false ;
163- await TriggerLogouted ( ) ;
168+ IsLogin = false ;
169+ await TriggerLogout ( ) ;
164170 }
165171
166- private async Task TriggerLogouted ( )
172+ private async Task TriggerLogout ( )
167173 {
168- if ( OnLogoutedAsync != null )
174+ if ( OnLogoutAsync != null )
169175 {
170- await OnLogoutedAsync ( ) ;
176+ await OnLogoutAsync ( ) ;
171177 }
172178 }
173179
180+ /// <summary>
181+ /// 获得通道列表方法
182+ /// </summary>
183+ /// <returns></returns>
184+ public async Task GetChannelList ( )
185+ {
186+ ThrowIfNotInited ( ) ;
187+ await InvokeVoidAsync ( "getChannelList" , Id ) ;
188+ }
189+
174190 /// <summary>
175191 /// 开始实时预览方法
176192 /// </summary>
177193 /// <returns></returns>
178194 public async Task StartRealPlay ( int streamType , int channelId )
179195 {
180- if ( IsLogined && ! IsRealPlaying )
196+ if ( IsLogin && ! IsRealPlaying )
181197 {
182198 IsRealPlaying = await InvokeAsync < bool ? > ( "startRealPlay" , Id , streamType , channelId ) ?? false ;
183199 if ( IsRealPlaying )
@@ -239,4 +255,18 @@ public async Task TriggerInited(bool inited)
239255 await OnInitedAsync ( inited ) ;
240256 }
241257 }
258+
259+ /// <summary>
260+ /// 触发 <see cref="OnGetChannelsAsync"/> 回调方法由 JavaScript 调用
261+ /// </summary>
262+ /// <param name="channel"></param>
263+ /// <returns></returns>
264+ [ JSInvokable ]
265+ public async Task TriggerGetChannelList ( HikVisionChannel channel )
266+ {
267+ if ( OnGetChannelsAsync != null )
268+ {
269+ await OnGetChannelsAsync ( channel ) ;
270+ }
271+ }
242272}
0 commit comments