Skip to content

Commit 237f551

Browse files
committed
doc: 增加接收数据示例文档
1 parent 2e4cb28 commit 237f551

File tree

9 files changed

+80
-27
lines changed

9 files changed

+80
-27
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
<Tips>
2+
<p><code>ITcpSocketFactory</code> 服务仅在 <code>Server</code> 模式下可用</p>
3+
</Tips>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
@page "/socket/receive"
2+
@inject IStringLocalizer<Receives> Localizer
3+
4+
<h3>@Localizer["ReceivesTitle"]</h3>
5+
<h4>@Localizer["ReceivesDescription"]</h4>
6+
7+
<Notice></Notice>
8+
9+
<DemoBlock Title="@Localizer["NormalTitle"]"
10+
Introduction="@Localizer["NormalIntro"]"
11+
Name="Normal" ShowCode="false">
12+
<p>本例中连接一个模拟时间同步服务,每间隔 10s 自动发送服务器时间戳,连接后无需发送任何数据即可持续收到时间戳数据</p>
13+
<ul class="ul-demo">
14+
<li>点击 <b>连接</b> 按钮后通过 <code>ITcpSocketFactory</code> 服务实例创建的 <code>ITcpSocketClient</code> 对象连接到网站模拟 <code>TcpServer</code></li>
15+
<li>点击 <b>断开</b> 按钮调用 <code>CloseAsync</code> 方法断开 Socket 连接</li>
16+
</ul>
17+
<p>使用 <code>ReceivedCallBack</code> 委托获得接收到的数据,可通过 <code>+=</code> 方法支持多个客户端接收数据</p>
18+
<Pre>_client.ReceivedCallBack += OnReceivedAsync;</Pre>
19+
<p>特别注意页面需要继承 <code>IDisposable</code> 或者 <code>IAsyncDisposable</code> 接口,在 <code>Dispose</code> 或者 <code>DisposeAsync</code> 中移除委托</p>
20+
<Pre>private void Dispose(bool disposing)
21+
{
22+
if (disposing)
23+
{
24+
if (_client is { IsConnected: true })
25+
{
26+
_client.ReceivedCallBack -= OnReceivedAsync;
27+
}
28+
}
29+
}</Pre>
30+
31+
<div class="row form-inline g-3">
32+
<div class="col-12 col-sm-6">
33+
<Button Text="连接" Icon="fa-solid fa-play"
34+
OnClick="OnConnectAsync" IsDisabled="@_client.IsConnected"></Button>
35+
<Button Text="断开" Icon="fa-solid fa-stop" class="ms-2"
36+
OnClick="OnCloseAsync" IsDisabled="@(!_client.IsConnected)"></Button>
37+
</div>
38+
<div class="col-12">
39+
<Console Items="@_items" Height="496" HeaderText="接收数据(间隔 10 秒)"
40+
ShowAutoScroll="true" OnClear="@OnClear"></Console>
41+
</div>
42+
</div>
43+
</DemoBlock>
44+

src/BootstrapBlazor.Server/Components/Samples/Tutorials/SocketApp.razor.cs renamed to src/BootstrapBlazor.Server/Components/Samples/Sockets/Receives.razor.cs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55

66
using System.Net;
77

8-
namespace BootstrapBlazor.Server.Components.Samples.Tutorials;
8+
namespace BootstrapBlazor.Server.Components.Samples.Sockets;
99

10-
public partial class SocketApp : ComponentBase, IDisposable
10+
/// <summary>
11+
///
12+
/// </summary>
13+
public partial class Receives : ComponentBase, IDisposable
1114
{
1215
[Inject, NotNull]
1316
private ITcpSocketFactory? TcpSocketFactory { get; set; }

src/BootstrapBlazor.Server/Components/Samples/Tutorials/SocketApp.razor

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/BootstrapBlazor.Server/Components/Samples/Tutorials/SocketApp.razor.css

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/BootstrapBlazor.Server/Extensions/MenusLocalizerExtensions.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ public static List<MenuItem> GenerateMenus(this IStringLocalizer<NavMenu> Locali
9191
};
9292
AddSpeech(item);
9393

94+
item = new DemoMenuItem()
95+
{
96+
Text = Localizer["SocketComponents"],
97+
Icon = "fa-solid fa-square-binary text-danger"
98+
};
99+
AddSocket(item);
100+
94101
item = new DemoMenuItem()
95102
{
96103
Text = Localizer["Services"],
@@ -205,6 +212,19 @@ void AddSpeech(DemoMenuItem item)
205212
AddBadge(item, count: 5);
206213
}
207214

215+
void AddSocket(DemoMenuItem item)
216+
{
217+
item.Items = new List<DemoMenuItem>
218+
{
219+
new()
220+
{
221+
Text = Localizer["SocketReceive"],
222+
Url = "socket/receive"
223+
}
224+
};
225+
AddBadge(item, count: 1);
226+
}
227+
208228
void AddQuickStar(DemoMenuItem item)
209229
{
210230
item.Items = new List<DemoMenuItem>

src/BootstrapBlazor.Server/Locales/en-US.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4953,7 +4953,9 @@
49534953
"DropUpload": "DropUpload",
49544954
"Vditor": "Vditor Markdown",
49554955
"TcpSocketFactory": "ITcpSocketFactory",
4956-
"OfficeViewer": "Office Viewer"
4956+
"OfficeViewer": "Office Viewer",
4957+
"SocketComponents": "ITcpSocketFactory",
4958+
"SocketReceive": "Receive"
49574959
},
49584960
"BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": {
49594961
"TablesHeaderTitle": "Header grouping function",

src/BootstrapBlazor.Server/Locales/zh-CN.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4953,7 +4953,9 @@
49534953
"DropUpload": "拖动上传组件 DropUpload",
49544954
"Vditor": "富文本框 Vditor Markdown",
49554955
"TcpSocketFactory": "套接字服务 ITcpSocketFactory",
4956-
"OfficeViewer": "Office 文档预览组件"
4956+
"OfficeViewer": "Office 文档预览组件",
4957+
"SocketComponents": "Socket 服务",
4958+
"SocketReceive": "接收数据"
49574959
},
49584960
"BootstrapBlazor.Server.Components.Samples.Table.TablesHeader": {
49594961
"TablesHeaderTitle": "表头分组功能",

src/BootstrapBlazor.Server/docs.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,8 @@
242242
"meet": "Meets",
243243
"vditor": "Vditors",
244244
"socket-factory": "SocketFactories",
245-
"office-viewer": "OfficeViewers"
245+
"office-viewer": "OfficeViewers",
246+
"socket/receive": "Sockets\\Receives"
246247
},
247248
"video": {
248249
"table": "BV1ap4y1x7Qn?p=1",

0 commit comments

Comments
 (0)