File tree Expand file tree Collapse file tree 9 files changed +80
-27
lines changed
src/BootstrapBlazor.Server Expand file tree Collapse file tree 9 files changed +80
-27
lines changed Original file line number Diff line number Diff line change 1+ <Tips >
2+ <p ><code >ITcpSocketFactory</code > 服务仅在 <code >Server</code > 模式下可用</p >
3+ </Tips >
Original file line number Diff line number Diff line change 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+
Original file line number Diff line number Diff line change 55
66using 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 ; }
Load Diff This file was deleted.
Load Diff This file was deleted.
Original file line number Diff line number Diff 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 >
Original file line number Diff line number Diff line change 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",
Original file line number Diff line number Diff line change 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": "表头分组功能",
Original file line number Diff line number Diff line change 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" ,
You can’t perform that action at this time.
0 commit comments