diff --git a/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj b/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj index a8010184d74..b48563d0368 100644 --- a/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj +++ b/src/BootstrapBlazor.Server/BootstrapBlazor.Server.csproj @@ -45,6 +45,7 @@ + diff --git a/src/BootstrapBlazor.Server/Components/Samples/Meets.razor b/src/BootstrapBlazor.Server/Components/Samples/Meets.razor new file mode 100644 index 00000000000..571005de2eb --- /dev/null +++ b/src/BootstrapBlazor.Server/Components/Samples/Meets.razor @@ -0,0 +1,24 @@ +@page "/meet" + +

JitsiMeet会议

+ +

通过JitsiMeet创建会议

+ + + + +

JitsiMeet是一个开源的WebRTC会议程序,可以自托管安装也可以使用官方的托管服务(免费计划为25MAU),此组件仅为JitsiMeet的客户端程序,不含服务端。

+

默认的测试会议仅支持5分钟的会议,并且主持人需要登录。子托管以及官方托管服务不需要。

+
+ + +
+
+ +
+
+ +
+
+ +
diff --git a/src/BootstrapBlazor.Server/Components/Samples/Meets.razor.cs b/src/BootstrapBlazor.Server/Components/Samples/Meets.razor.cs new file mode 100644 index 00000000000..e99a987c654 --- /dev/null +++ b/src/BootstrapBlazor.Server/Components/Samples/Meets.razor.cs @@ -0,0 +1,56 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the Apache 2.0 License +// See the LICENSE file in the project root for more information. +// Maintainer: Argo Zhang(argo@live.ca) Website: https://www.blazor.zone + +namespace BootstrapBlazor.Server.Components.Samples; + +/// +/// Meet 视频会议组件示例 +/// +public partial class Meets : ComponentBase +{ + private MeetOption? _option; + private Meet? _meet; + private readonly string _domain = "meet.jit.si"; + + [Inject, NotNull] + private ToastService? ToastService { get; set; } + + /// + /// + /// + protected override void OnInitialized() + { + base.OnInitialized(); + + _option = new MeetOption + { + RoomName = "BootstrapBlazor", + Width = "100%", + Height = 700, + ConfigOverwrite = new + { + Lobby = new { EnableChat = false }, + HiddenPremeetingButtons = new string[] { "invite" }, + DisableInviteFunctions = true, + ButtonsWithNotifyClick = new[] { new { key = "invite", preventExecution = true } } + }, + UserInfo = new UserInfo() { DisplayName = "BootstrapBlazor", Email = "a@blazor.zone" } + }; + } + + private void OnLoad() + { + ToastService.Information("Meet 示例", "会议室加载完成"); + } + + private async Task RunCommand() + { + if (_meet != null) + { + await _meet.ExecuteCommand("toggleChat"); + } + } +} + diff --git a/src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs b/src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs index 01de5dff64b..bca2f571ecb 100644 --- a/src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs +++ b/src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs @@ -1208,6 +1208,12 @@ void AddNotice(DemoMenuItem item) Url = "message" }, new() + { + IsNew = true, + Text = Localizer["Meet"], + Url = "meet" + }, + new() { Text = Localizer["Modal"], Url = "modal" diff --git a/src/BootstrapBlazor.Server/Locales/en-US.json b/src/BootstrapBlazor.Server/Locales/en-US.json index c4abe711650..3a5d8bc5bb7 100644 --- a/src/BootstrapBlazor.Server/Locales/en-US.json +++ b/src/BootstrapBlazor.Server/Locales/en-US.json @@ -4943,7 +4943,8 @@ "TotpService": "ITotpService", "VideoDevice": "IVideoDevice", "AudioDevice": "IAudioDevice", - "FullScreenButton": "FullScreenButton" + "FullScreenButton": "FullScreenButton", + "Meet": "Meet" }, "BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": { "TablesHeaderTitle": "Header grouping function", diff --git a/src/BootstrapBlazor.Server/Locales/zh-CN.json b/src/BootstrapBlazor.Server/Locales/zh-CN.json index c6e970577ea..e77313cbc37 100644 --- a/src/BootstrapBlazor.Server/Locales/zh-CN.json +++ b/src/BootstrapBlazor.Server/Locales/zh-CN.json @@ -4943,7 +4943,8 @@ "TotpService": "时间密码验证服务 ITotpService", "VideoDevice": "视频设备服务 IVideoDevice", "AudioDevice": "音频设备服务 IAudioDevice", - "FullScreenButton": "全屏按钮 FullScreenButton" + "FullScreenButton": "全屏按钮 FullScreenButton", + "Meet": "视频会议组件 Meet" }, "BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": { "TablesHeaderTitle": "表头分组功能", diff --git a/src/BootstrapBlazor.Server/docs.json b/src/BootstrapBlazor.Server/docs.json index 9489fc14965..5b95caa0a72 100644 --- a/src/BootstrapBlazor.Server/docs.json +++ b/src/BootstrapBlazor.Server/docs.json @@ -233,7 +233,8 @@ "otp-service": "OtpServices", "video-device": "VideoDevices", "audio-device": "AudioDevices", - "fullscreen-button": "FullScreenButtons" + "fullscreen-button": "FullScreenButtons", + "meet": "Meets" }, "video": { "table": "BV1ap4y1x7Qn?p=1",