提交 090d33ca 编写于 作者: 若汝棋茗

更新文档,更新demo,更新引用

上级 00b8c147
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
<ItemGroup>
<None Update="SGCC测试数据.txt">
......
......@@ -7,6 +7,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -9,7 +9,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -5,6 +5,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -7,7 +7,7 @@
<ItemGroup>
<PackageReference Include="Consul" Version="1.6.10.8" />
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -7,7 +7,7 @@
<ItemGroup>
<PackageReference Include="Consul" Version="1.6.10.8" />
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -8,7 +8,7 @@
<ItemGroup>
<PackageReference Include="Consul" Version="1.6.10.8" />
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -7,6 +7,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -5,6 +5,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -5,6 +5,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -12,7 +12,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
<PackageReference Include="WPF-UI" Version="2.0.3" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
</ItemGroup>
......
......@@ -12,7 +12,7 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
<PackageReference Include="WPF-UI" Version="2.0.3" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
</ItemGroup>
......
......@@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -7,6 +7,6 @@
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -9,7 +9,7 @@
<ItemGroup>
<PackageReference Include="log4net" Version="2.0.15" />
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
<ItemGroup>
......
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
......@@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,7 +6,7 @@
<ItemGroup>
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.5.0" />
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
<PackageReference Include="TouchSocketPro.AspNetCore" Version="1.2.3" />
</ItemGroup>
</Project>
......@@ -46,8 +46,8 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="TouchSocket, Version=1.2.16.0, Culture=neutral, PublicKeyToken=e66400a0f8ce7abb, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\TouchSocket.1.2.16\lib\net45\TouchSocket.dll</HintPath>
<Reference Include="TouchSocket, Version=1.2.17.0, Culture=neutral, PublicKeyToken=e66400a0f8ce7abb, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\TouchSocket.1.2.17\lib\net45\TouchSocket.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
......
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="TouchSocket" version="1.2.16" targetFramework="net48" />
<package id="TouchSocket" version="1.2.17" targetFramework="net48" />
</packages>
\ No newline at end of file
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -46,8 +46,8 @@
<Reference Include="System.Net.Http" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="TouchSocket, Version=1.2.16.0, Culture=neutral, PublicKeyToken=e66400a0f8ce7abb, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\TouchSocket.1.2.16\lib\net45\TouchSocket.dll</HintPath>
<Reference Include="TouchSocket, Version=1.2.17.0, Culture=neutral, PublicKeyToken=e66400a0f8ce7abb, processorArchitecture=MSIL">
<HintPath>..\..\..\packages\TouchSocket.1.2.17\lib\net45\TouchSocket.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
......
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="TouchSocket" version="1.2.16" targetFramework="net48" />
<package id="TouchSocket" version="1.2.17" targetFramework="net48" />
</packages>
\ No newline at end of file
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -8,6 +8,6 @@
<Compile Include="..\TouchRpcServerApp\RpcProxy.cs" Link="RpcProxy.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
......@@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,7 +6,7 @@
<ItemGroup>
<PackageReference Include="MemoryPack" Version="1.9.13" />
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
......@@ -7,7 +7,7 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
<PackageReference Include="TouchSocketPro.CodeAnalyzer" Version="1.2.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
......
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
<ItemGroup>
......
......@@ -5,7 +5,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
<PackageReference Include="TouchSocketPro.CodeAnalyzer" Version="1.2.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
......
......@@ -5,7 +5,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
<ItemGroup>
......
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
<PackageReference Include="TouchSocketPro.CodeAnalyzer" Version="1.2.9">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
......
......@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -7,6 +7,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -8,7 +8,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -5,6 +5,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -4,6 +4,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -20,17 +20,17 @@ namespace WSClientApp
client.Logger.Info("成功连接");
}
private WebSocketClient myWSClient;
private WebSocketClient client;
private void button1_Click(object sender, EventArgs e)
{
myWSClient.SafeDispose();
client.SafeDispose();
myWSClient = new WebSocketClient();
myWSClient.Received = this.MyWSClient_Received;
myWSClient.Handshaked = this.MyWSClient_Handshaked;
client = new WebSocketClient();
client.Received = this.MyWSClient_Received;
client.Handshaked = this.MyWSClient_Handshaked;
myWSClient.Setup(new TouchSocketConfig()
client.Setup(new TouchSocketConfig()
.SetRemoteIPHost(this.textBox3.Text)
.UsePlugin()
.ConfigureContainer(a =>
......@@ -38,12 +38,21 @@ namespace WSClientApp
a.AddFileLogger();
a.AddEasyLogger(this.ShowMsg);
})
.ConfigurePlugins(a =>
.ConfigurePlugins(a =>
{
a.UseWebSocketHeartbeat()//使用心跳插件
.Tick(TimeSpan.FromSeconds(5));//每5秒ping一次。
a.Add<MyWSClientPlugin>();
}));
myWSClient.Connect();
myWSClient.CloseWithWS("close");
client.Connect();
client.CloseWithWS("close");
WSDataFrame dataFrame = new WSDataFrame()
{
FIN = true,
Opcode = WSDataType.Ping
}
}
private void MyWSClient_Received(WebSocketClient client, WSDataFrame dataFrame)
......@@ -98,11 +107,11 @@ namespace WSClientApp
{
try
{
this.myWSClient.SendWithWS(this.textBox2.Text);
this.client.SendWithWS(this.textBox2.Text);
}
catch (Exception ex)
{
this.myWSClient.Logger.Exception(ex);
this.client.Logger.Exception(ex);
}
}
......@@ -111,16 +120,16 @@ namespace WSClientApp
byte[] data = new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
try
{
this.myWSClient.SubSendWithWS(data, 5);
this.client.SubSendWithWS(data, 5);
}
catch (Exception ex)
{
this.myWSClient.Logger.Exception(ex);
this.client.Logger.Exception(ex);
}
}
}
class MyWSClientPlugin:WebSocketPluginBase<WebSocketClient>
class MyWSClientPlugin : WebSocketPluginBase<WebSocketClient>
{
protected override void OnHandleWSDataFrame(WebSocketClient client, WSDataFrameEventArgs e)
{
......
......@@ -7,7 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -7,7 +7,7 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -28,6 +28,7 @@ namespace WebSocketConsoleApp
{
a.UseWebSocket()//添加WebSocket功能
.SetWSUrl("/ws")
.UseAutoPong()//当收到ping报文时自动回应pong
.SetCallback(WSCallback);//WSCallback回调函数是在WS收到数据时触发回调的。
a.Add<MyWebSocketPlugin>();//MyWebSocketPlugin是继承自WebSocketPluginBase的插件。
a.Add<MyWSCommandLinePlugin>();
......
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -4,6 +4,6 @@
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -6,7 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,6 +6,6 @@
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocket" Version="1.2.16" />
<PackageReference Include="TouchSocket" Version="1.2.17" />
</ItemGroup>
</Project>
......@@ -6,6 +6,6 @@
<UseWindowsForms>true</UseWindowsForms>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
\ No newline at end of file
......@@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="TouchSocketPro" Version="1.2.26" />
<PackageReference Include="TouchSocketPro" Version="1.2.27" />
</ItemGroup>
</Project>
......@@ -4,13 +4,13 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.3.1">
<title data-rh="true">Page Not Found | TouchSocket</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://rrqm_home.gitee.io/touchsocket/404.html"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Page Not Found | TouchSocket"><link data-rh="true" rel="icon" href="/touchsocket/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://rrqm_home.gitee.io/touchsocket/404.html"><link data-rh="true" rel="alternate" href="https://rrqm_home.gitee.io/touchsocket/404.html" hreflang="en"><link data-rh="true" rel="alternate" href="https://rrqm_home.gitee.io/touchsocket/404.html" hreflang="x-default"><link rel="stylesheet" href="/touchsocket/assets/css/styles.d72046aa.css">
<link rel="preload" href="/touchsocket/assets/js/runtime~main.06152d7c.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/main.3bb5b798.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/runtime~main.7e03d791.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/main.262ba133.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/touchsocket/"><div class="navbar__logo"><img src="/touchsocket/img/TouchSocketlogo.png" alt="TouchSocket Logo" class="themedImage_ToTc themedImage--light_HNdA"><img src="/touchsocket/img/TouchSocketlogo.png" alt="TouchSocket Logo" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">TouchSocket</b></a><a class="navbar__item navbar__link" href="/touchsocket/docs">文档</a><a class="navbar__item navbar__link" href="/touchsocket/docs/upgrade">更新日志</a></div><div class="navbar__items navbar__items--right"><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">源码</a><ul class="dropdown__menu"><li><a href="https://gitee.com/rrqm_home/touchsocket" target="_blank" rel="noopener noreferrer" class="dropdown__link">Gitee(主库)<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://github.com/RRQM/TouchSocket" target="_blank" rel="noopener noreferrer" class="dropdown__link">GitHub<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://www.nuget.org/profiles/rrqm" target="_blank" rel="noopener noreferrer" class="dropdown__link">Nuget<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><a href="https://gitee.com/dotnetchina" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">社区<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div><div class="searchHintContainer_Pkmr"><kbd class="searchHint_iIMx">ctrl</kbd><kbd class="searchHint_iIMx">K</kbd></div></div></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><main class="container margin-vert--xl"><div class="row"><div class="col col--6 col--offset-3"><h1 class="hero__title">Page Not Found</h1><p>We could not find what you were looking for.</p><p>Please contact the owner of the site that linked you to the original URL and let them know their link is broken.</p></div></div></main></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">文档</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/touchsocket/docs">入门</a></li><li class="footer__item"><a class="footer__link-item" href="/touchsocket/docs">手册</a></li></ul></div><div class="col footer__col"><div class="footer__title">社区</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitee.com/rrqm_home/touchsocket/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">讨论<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://gitee.com/rrqm_home/touchsocket/board" target="_blank" rel="noopener noreferrer" class="footer__link-item">看板<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">更多</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://gitee.com/rrqm_home/touchsocket" target="_blank" rel="noopener noreferrer" class="footer__link-item">仓库<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2020-2023 若汝棋茗.</div></div></div></footer></div>
<script src="/touchsocket/assets/js/runtime~main.06152d7c.js"></script>
<script src="/touchsocket/assets/js/main.3bb5b798.js"></script>
<script src="/touchsocket/assets/js/runtime~main.7e03d791.js"></script>
<script src="/touchsocket/assets/js/main.262ba133.js"></script>
</body>
</html>
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[9035],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},d=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=l(r),m=a,k=u["".concat(p,".").concat(m)]||u[m]||s[m]||o;return r?n.createElement(k,i(i({ref:t},d),{},{components:r})):n.createElement(k,i({ref:t},d))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=u;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var l=2;l<o;l++)i[l]=r[l];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},3914:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>c,toc:()=>l});var n=r(7462),a=(r(7294),r(3905));const o={id:"terminatorpackageadapter",title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},i=void 0,c={unversionedId:"terminatorpackageadapter",id:"terminatorpackageadapter",title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/terminatorpackageadapter.mdx",sourceDirName:".",slug:"/terminatorpackageadapter",permalink:"/touchsocket/docs/terminatorpackageadapter",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/terminatorpackageadapter.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1677212581,formattedLastUpdatedAt:"Feb 24, 2023",frontMatter:{id:"terminatorpackageadapter",title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},sidebar:"docs",previous:{title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/fixedsizepackageadapter"},next:{title:"\u539f\u59cb\u81ea\u5b9a\u4e49\u9002\u914d\u5668",permalink:"/touchsocket/docs/datahandleadapter"}},p={},l=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u4f7f\u7528",id:"\u4e09\u4f7f\u7528",level:2}],d={toc:l};function s(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u7ec8\u6b62\u56e0\u5b50\u6570\u636e\u5904\u7406\u9002\u914d\u5668\u662f\u901a\u8fc7",(0,a.kt)("strong",{parentName:"p"},"\u7279\u6b8a\u5b57\u7b26\u6216\u6570\u503c"),"\u7684\u65b9\u5f0f\uff0c\u6765\u8fbe\u5230\u5904\u7406\u7c98\u5305\u3001\u5206\u5305\u7684\u76ee\u7684\u3002\u53ef\u968f\u610f\u8bbe\u7f6e\u5206\u5272\u56e0\u5b50\u7684\u503c\uff0c\u4ee5\u53ca\u7f16\u7801\u65b9\u5f0f\u3002\u4e0d\u4ec5\u5982\u6b64\uff0c\u8fd8\u6709\u5f02\u5e38\u6570\u636e\u8bbe\u7f6e\uff0c\u5728\u8fbe\u5230\u8bbe\u5b9a\u503c\u65f6\uff0c\u5982\u679c\u8fd8\u6ca1\u6709\u53d1\u73b0\u5206\u5272\u56e0\u5b50\uff0c\u5219\u629b\u5f03\u6570\u636e\u3002\u5176\u7a33\u5b9a\u6027\u4ec5\u6b21\u4e8e\u56fa\u5b9a\u5305\u5934\uff0c\u4e14\u4f7f\u7528\u573a\u666f\u4e5f\u6bd4\u8f83\u5e7f\u6cdb\u3002"),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u6700\u9002\u7528\u4e8e\u5b57\u7b26\u4e32\u7c7b\uff08Json\uff0cXml\u7b49\uff09\u7684\u4fe1\u606f\u4ea4\u4e92\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u7b97\u6cd5\u7b80\u5355\uff0c\u975e\u5e38\u5bb9\u6613\u5b9e\u73b0\u8de8\u8bed\u8a00\u3001\u8de8\u6846\u67b6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u53d1\u9001\u666e\u901a\u6d41\u6570\u636e\u65f6\uff0c\u6709\u5f88\u5c0f\u7684\u6982\u7387\u53d1\u751f\u63d0\u524d\u7ec8\u6b62\u7684\u60c5\u51b5\uff08\u53ef\u8bbe\u7f6e\u590d\u6742\u7ec8\u6b62\u56e0\u5b50\u6765\u89e3\u51b3\uff09\u3002")),(0,a.kt)("h2",{id:"\u4e09\u4f7f\u7528"},"\u4e09\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002\u4e0b\u5217\u4ee5\u670d\u52a1\u5668\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,"\u6b65\u9aa4"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"TouchSocketConfig\u914d\u7f6e\u4e2d\u8bbe\u7f6e\uff0c\u540c\u65f6\u6307\u5b9a\u6570\u636e\u7684\u957f\u5ea6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u901a\u8fc7Received\uff08\u4e8b\u4ef6\u3001\u65b9\u6cd5\u3001\u63d2\u4ef6\uff09\u4e2d\u7684ByteBlock\u8bfb\u53d6\u6570\u636e\uff08\u6ce8\u610f\uff1a\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff09\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{10}","{10}":!0},'TcpService service = new TcpService();\nservice.Received += (client, byteBlock, requestInfo) =>\n{\n //\u4ece\u5ba2\u6237\u7aef\u6536\u5230\u4fe1\u606f\n string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost(7790) })\n .SetDataHandlingAdapter(()=> { return new TerminatorPackageAdapter("\\r\\n"); }))//\u914d\u7f6e\u7ec8\u6b62\u5b57\u7b26\u9002\u914d\u5668\uff0c\u4ee5\\r\\n\u7ed3\u5c3e\u3002\n .Start();//\u542f\u52a8\n')),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5728\u53d1\u9001\uff08Send\u3001SendAsync\uff09\u6570\u636e\u65f6\uff0c\u4f1a\u81ea\u52a8\u8ffd\u52a0\u5206\u5272\u7b26\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u624b\u52a8\u5c01\u88c5\u3002\u5982\u679c\u60f3\u8981\u53d1\u9001\u624b\u52a8\u7ec4\u88c5\u7684\u6570\u636e\uff0c\u8bf7\u4f7f\u7528DefaultSend\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u7ec8\u6b62\u56e0\u5b50\u4e0d\u4f1a\u4fdd\u7559\u5728\u6570\u636e\u4e2d\uff0c\u7528\u6237\u53ef\u901a\u8fc7ReserveTerminatorCode\u5c5e\u6027\uff0c\u8bbe\u4e3atrue\uff0c\u6765\u4fdd\u7559\u7ec8\u6b62\u56e0\u5b50\u3002")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff0c\u800c\u4e0d\u662fbyteBlock.Buffer.Length\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002")))}s.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[9035],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>m});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),m=a,k=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return r?n.createElement(k,i(i({ref:t},s),{},{components:r})):n.createElement(k,i({ref:t},s))}));function m(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},3914:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const o={id:"terminatorpackageadapter",title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},i=void 0,c={unversionedId:"terminatorpackageadapter",id:"terminatorpackageadapter",title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/terminatorpackageadapter.mdx",sourceDirName:".",slug:"/terminatorpackageadapter",permalink:"/touchsocket/docs/terminatorpackageadapter",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/terminatorpackageadapter.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"terminatorpackageadapter",title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},sidebar:"docs",previous:{title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/fixedsizepackageadapter"},next:{title:"\u539f\u59cb\u81ea\u5b9a\u4e49\u9002\u914d\u5668",permalink:"/touchsocket/docs/datahandleadapter"}},l={},p=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u4f7f\u7528",id:"\u4e09\u4f7f\u7528",level:2}],s={toc:p};function d(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u7ec8\u6b62\u56e0\u5b50\u6570\u636e\u5904\u7406\u9002\u914d\u5668\u662f\u901a\u8fc7",(0,a.kt)("strong",{parentName:"p"},"\u7279\u6b8a\u5b57\u7b26\u6216\u6570\u503c"),"\u7684\u65b9\u5f0f\uff0c\u6765\u8fbe\u5230\u5904\u7406\u7c98\u5305\u3001\u5206\u5305\u7684\u76ee\u7684\u3002\u53ef\u968f\u610f\u8bbe\u7f6e\u5206\u5272\u56e0\u5b50\u7684\u503c\uff0c\u4ee5\u53ca\u7f16\u7801\u65b9\u5f0f\u3002\u4e0d\u4ec5\u5982\u6b64\uff0c\u8fd8\u6709\u5f02\u5e38\u6570\u636e\u8bbe\u7f6e\uff0c\u5728\u8fbe\u5230\u8bbe\u5b9a\u503c\u65f6\uff0c\u5982\u679c\u8fd8\u6ca1\u6709\u53d1\u73b0\u5206\u5272\u56e0\u5b50\uff0c\u5219\u629b\u5f03\u6570\u636e\u3002\u5176\u7a33\u5b9a\u6027\u4ec5\u6b21\u4e8e\u56fa\u5b9a\u5305\u5934\uff0c\u4e14\u4f7f\u7528\u573a\u666f\u4e5f\u6bd4\u8f83\u5e7f\u6cdb\u3002"),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u6700\u9002\u7528\u4e8e\u5b57\u7b26\u4e32\u7c7b\uff08Json\uff0cXml\u7b49\uff09\u7684\u4fe1\u606f\u4ea4\u4e92\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u7b97\u6cd5\u7b80\u5355\uff0c\u975e\u5e38\u5bb9\u6613\u5b9e\u73b0\u8de8\u8bed\u8a00\u3001\u8de8\u6846\u67b6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u53d1\u9001\u666e\u901a\u6d41\u6570\u636e\u65f6\uff0c\u6709\u5f88\u5c0f\u7684\u6982\u7387\u53d1\u751f\u63d0\u524d\u7ec8\u6b62\u7684\u60c5\u51b5\uff08\u53ef\u8bbe\u7f6e\u590d\u6742\u7ec8\u6b62\u56e0\u5b50\u6765\u89e3\u51b3\uff09\u3002")),(0,a.kt)("h2",{id:"\u4e09\u4f7f\u7528"},"\u4e09\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002\u4e0b\u5217\u4ee5\u670d\u52a1\u5668\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,"\u6b65\u9aa4"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"TouchSocketConfig\u914d\u7f6e\u4e2d\u8bbe\u7f6e\uff0c\u540c\u65f6\u6307\u5b9a\u6570\u636e\u7684\u957f\u5ea6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u901a\u8fc7Received\uff08\u4e8b\u4ef6\u3001\u65b9\u6cd5\u3001\u63d2\u4ef6\uff09\u4e2d\u7684ByteBlock\u8bfb\u53d6\u6570\u636e\uff08\u6ce8\u610f\uff1a\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff09\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{10}","{10}":!0},'TcpService service = new TcpService();\nservice.Received += (client, byteBlock, requestInfo) =>\n{\n //\u4ece\u5ba2\u6237\u7aef\u6536\u5230\u4fe1\u606f\n string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost(7790) })\n .SetDataHandlingAdapter(()=> { return new TerminatorPackageAdapter("\\r\\n"); }))//\u914d\u7f6e\u7ec8\u6b62\u5b57\u7b26\u9002\u914d\u5668\uff0c\u4ee5\\r\\n\u7ed3\u5c3e\u3002\n .Start();//\u542f\u52a8\n')),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u7ec8\u6b62\u56e0\u5b50\u4e0d\u4f1a\u4fdd\u7559\u5728\u6570\u636e\u4e2d\uff0c\u7528\u6237\u53ef\u901a\u8fc7ReserveTerminatorCode\u5c5e\u6027\uff0c\u8bbe\u4e3atrue\uff0c\u6765\u4fdd\u7559\u7ec8\u6b62\u56e0\u5b50\u3002")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff0c\u800c\u4e0d\u662fbyteBlock.Buffer.Length\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002")))}d.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[2671],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>d});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var c=r.createContext({}),l=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=l(e.components);return r.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=l(t),d=o,g=m["".concat(c,".").concat(d)]||m[d]||p[d]||a;return t?r.createElement(g,i(i({ref:n},u),{},{components:t})):r.createElement(g,i({ref:n},u))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var a=t.length,i=new Array(a);i[0]=m;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=t[l];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},7116:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=t(7462),o=(t(7294),t(3905));const a={id:"wscommandlineplugin",title:"WSCommandLinePlugin"},i=void 0,s={unversionedId:"wscommandlineplugin",id:"wscommandlineplugin",title:"WSCommandLinePlugin",description:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u3001\u670d\u52a1\u5668\u5747\u652f\u6301",source:"@site/docs/wscommandlineplugin.mdx",sourceDirName:".",slug:"/wscommandlineplugin",permalink:"/touchsocket/docs/wscommandlineplugin",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/wscommandlineplugin.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"wscommandlineplugin",title:"WSCommandLinePlugin"},sidebar:"docs",previous:{title:"\u8fde\u63a5\u9a8c\u8bc1",permalink:"/touchsocket/docs/websocketverify"},next:{title:"\u57fa\u4e8eWS\u7684JsonRpc",permalink:"/touchsocket/docs/wsjsonrpc"}},c={},l=[{value:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u3001\u670d\u52a1\u5668\u5747\u652f\u6301",id:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u670d\u52a1\u5668\u5747\u652f\u6301",level:2}],u={toc:l};function p(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u670d\u52a1\u5668\u5747\u652f\u6301"},"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u3001\u670d\u52a1\u5668\u5747\u652f\u6301"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"WSCommandLinePlugin"),"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\uff0c\u662f\u7528\u4e8e",(0,o.kt)("strong",{parentName:"p"},"WebSocket"),"\u7684\u5feb\u6377\u4e8b\u52a1\u5b9e\u73b0\uff0c\u8ba9WS\u5728",(0,o.kt)("strong",{parentName:"p"},"Text"),"\u6587\u672c\u4e2d\uff0c\u7528\u6700\u7b80\u5355\u7684\u6587\u5b57\u6d88\u606f\u5373\u53ef\u5b8c\u6210\u76f8\u5173\u4e8b\u52a1\u7684\u6267\u884c\u3002\u8be5\u7c7b\u662f\u62bd\u8c61\u7c7b\uff0c\u5fc5\u987b\u901a\u8fc7\u7ee7\u627f\uff0c\u5728\u7ee7\u627f\u7c7b\u4e2d\uff0c\u58f0\u660e\u7684\u5177\u7684",(0,o.kt)("strong",{parentName:"p"},"\u516c\u5171\u7684"),"\u4e14\u540d\u79f0\u4ee5",(0,o.kt)("strong",{parentName:"p"},"Command"),"\u7ed3\u5c3e\u7684\u65b9\u6cd5\uff0c\u5747\u53ef\u88ab\u5feb\u6377\u6267\u884c\u3002"),(0,o.kt)("p",null,"\u4f8b\u5982\uff1a\u4e0b\u5217\u63d2\u4ef6\uff0c\u5373\u53ef\u88ab\u666e\u901aWS\u5ba2\u6237\u7aef\uff0c\u6216\u670d\u52a1\u5668\u4fbf\u6377\u8c03\u7528\u3002"),(0,o.kt)("p",null,"\u8c03\u7528\u6570\u636e\u683c\u5f0f\uff1a\n",(0,o.kt)("inlineCode",{parentName:"p"},"Add 10 20"),"\u652f\u6301Json\u6570\u636e\u683c\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new HttpService();\n\nvar config = new TouchSocketConfig();\nconfig.UsePlugin()\n .SetReceiveType(ReceiveType.Auto)\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a=> \n {\n a.SetSingletonLogger<ConsoleLogger>();\n })\n .ConfigurePlugins(a=> \n {\n a.Add<WebSocketServerPlugin>();//\u6dfb\u52a0WebSocket\u529f\u80fd\n a.Add<MyWSCommandLinePlugin>();//\u6dfb\u52a0WS\u547d\u4ee4\u884c\u4e8b\u52a1\u3002\n });\n\nservice.Setup(config)\n .Start();\nservice.Logger.Message("Http\u670d\u52a1\u5668\u5df2\u542f\u52a8");\nservice.Logger.Message("WS\u8bbf\u95ee\uff1aws://127.0.0.1:7789/ws");\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'/// <summary>\n/// \u547d\u4ee4\u884c\u63d2\u4ef6\u3002\n/// \u58f0\u660e\u7684\u65b9\u6cd5\u5fc5\u987b\u4ee5"Command"\u7ed3\u5c3e\uff0c\u652f\u6301json\u5b57\u7b26\u4e32\uff0c\u53c2\u6570\u4e4b\u95f4\u7a7a\u683c\u9694\u5f00\u3002\n/// </summary>\nclass MyWSCommandLinePlugin : WSCommandLinePlugin\n{\n public int AddCommand(int a, int b)\n {\n return a + b;\n }\n\n public SumClass SumCommand(SumClass sumClass)\n {\n sumClass.Sum = sumClass.A + sumClass.B;\n return sumClass;\n }\n}\nclass SumClass\n{\n public int A { get; set; }\n public int B { get; set; }\n public int Sum { get; set; }\n\n}\n')))}p.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[2671],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>d});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?a(Object(t),!0).forEach((function(n){o(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):a(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function s(e,n){if(null==e)return{};var t,r,o=function(e,n){if(null==e)return{};var t,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)t=a[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var c=r.createContext({}),l=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=l(e.components);return r.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),m=l(t),d=o,g=m["".concat(c,".").concat(d)]||m[d]||p[d]||a;return t?r.createElement(g,i(i({ref:n},u),{},{components:t})):r.createElement(g,i({ref:n},u))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var a=t.length,i=new Array(a);i[0]=m;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:o,i[1]=s;for(var l=2;l<a;l++)i[l]=t[l];return r.createElement.apply(null,i)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},7116:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>s,toc:()=>l});var r=t(7462),o=(t(7294),t(3905));const a={id:"wscommandlineplugin",title:"WSCommandLinePlugin"},i=void 0,s={unversionedId:"wscommandlineplugin",id:"wscommandlineplugin",title:"WSCommandLinePlugin",description:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u3001\u670d\u52a1\u5668\u5747\u652f\u6301",source:"@site/docs/wscommandlineplugin.mdx",sourceDirName:".",slug:"/wscommandlineplugin",permalink:"/touchsocket/docs/wscommandlineplugin",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/wscommandlineplugin.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"wscommandlineplugin",title:"WSCommandLinePlugin"},sidebar:"docs",previous:{title:"Websocket\u5fc3\u8df3\u8bbe\u7f6e",permalink:"/touchsocket/docs/websocketheartbeat"},next:{title:"\u57fa\u4e8eWS\u7684JsonRpc",permalink:"/touchsocket/docs/wsjsonrpc"}},c={},l=[{value:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u3001\u670d\u52a1\u5668\u5747\u652f\u6301",id:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u670d\u52a1\u5668\u5747\u652f\u6301",level:2}],u={toc:l};function p(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u670d\u52a1\u5668\u5747\u652f\u6301"},"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\u5ba2\u6237\u7aef\u3001\u670d\u52a1\u5668\u5747\u652f\u6301"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"WSCommandLinePlugin"),"\u547d\u4ee4\u884c\u6267\u884c\u63d2\u4ef6\uff0c\u662f\u7528\u4e8e",(0,o.kt)("strong",{parentName:"p"},"WebSocket"),"\u7684\u5feb\u6377\u4e8b\u52a1\u5b9e\u73b0\uff0c\u8ba9WS\u5728",(0,o.kt)("strong",{parentName:"p"},"Text"),"\u6587\u672c\u4e2d\uff0c\u7528\u6700\u7b80\u5355\u7684\u6587\u5b57\u6d88\u606f\u5373\u53ef\u5b8c\u6210\u76f8\u5173\u4e8b\u52a1\u7684\u6267\u884c\u3002\u8be5\u7c7b\u662f\u62bd\u8c61\u7c7b\uff0c\u5fc5\u987b\u901a\u8fc7\u7ee7\u627f\uff0c\u5728\u7ee7\u627f\u7c7b\u4e2d\uff0c\u58f0\u660e\u7684\u5177\u7684",(0,o.kt)("strong",{parentName:"p"},"\u516c\u5171\u7684"),"\u4e14\u540d\u79f0\u4ee5",(0,o.kt)("strong",{parentName:"p"},"Command"),"\u7ed3\u5c3e\u7684\u65b9\u6cd5\uff0c\u5747\u53ef\u88ab\u5feb\u6377\u6267\u884c\u3002"),(0,o.kt)("p",null,"\u4f8b\u5982\uff1a\u4e0b\u5217\u63d2\u4ef6\uff0c\u5373\u53ef\u88ab\u666e\u901aWS\u5ba2\u6237\u7aef\uff0c\u6216\u670d\u52a1\u5668\u4fbf\u6377\u8c03\u7528\u3002"),(0,o.kt)("p",null,"\u8c03\u7528\u6570\u636e\u683c\u5f0f\uff1a\n",(0,o.kt)("inlineCode",{parentName:"p"},"Add 10 20"),"\u652f\u6301Json\u6570\u636e\u683c\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new HttpService();\n\nvar config = new TouchSocketConfig();\nconfig.UsePlugin()\n .SetReceiveType(ReceiveType.Auto)\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a=> \n {\n a.SetSingletonLogger<ConsoleLogger>();\n })\n .ConfigurePlugins(a=> \n {\n a.Add<WebSocketServerPlugin>();//\u6dfb\u52a0WebSocket\u529f\u80fd\n a.Add<MyWSCommandLinePlugin>();//\u6dfb\u52a0WS\u547d\u4ee4\u884c\u4e8b\u52a1\u3002\n });\n\nservice.Setup(config)\n .Start();\nservice.Logger.Message("Http\u670d\u52a1\u5668\u5df2\u542f\u52a8");\nservice.Logger.Message("WS\u8bbf\u95ee\uff1aws://127.0.0.1:7789/ws");\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'/// <summary>\n/// \u547d\u4ee4\u884c\u63d2\u4ef6\u3002\n/// \u58f0\u660e\u7684\u65b9\u6cd5\u5fc5\u987b\u4ee5"Command"\u7ed3\u5c3e\uff0c\u652f\u6301json\u5b57\u7b26\u4e32\uff0c\u53c2\u6570\u4e4b\u95f4\u7a7a\u683c\u9694\u5f00\u3002\n/// </summary>\nclass MyWSCommandLinePlugin : WSCommandLinePlugin\n{\n public int AddCommand(int a, int b)\n {\n return a + b;\n }\n\n public SumClass SumCommand(SumClass sumClass)\n {\n sumClass.Sum = sumClass.A + sumClass.B;\n return sumClass;\n }\n}\nclass SumClass\n{\n public int A { get; set; }\n public int B { get; set; }\n public int Sum { get; set; }\n\n}\n')))}p.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[2289],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>k});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(r),k=a,m=s["".concat(l,".").concat(k)]||s[k]||u[k]||o;return r?n.createElement(m,c(c({ref:t},d),{},{components:r})):n.createElement(m,c({ref:t},d))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,c=new Array(o);c[0]=s;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:a,c[1]=i;for(var p=2;p<o;p++)c[p]=r[p];return n.createElement.apply(null,c)}return n.createElement.apply(null,r)}s.displayName="MDXCreateElement"},9574:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const o={id:"fixedheaderpackageadapter",title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},c=void 0,i={unversionedId:"fixedheaderpackageadapter",id:"fixedheaderpackageadapter",title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/fixedheaderpackageadapter.mdx",sourceDirName:".",slug:"/fixedheaderpackageadapter",permalink:"/touchsocket/docs/fixedheaderpackageadapter",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/fixedheaderpackageadapter.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"fixedheaderpackageadapter",title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},sidebar:"docs",previous:{title:"a.\u6b63\u5e38\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/normaldatahandlingadapter"},next:{title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/fixedsizepackageadapter"}},l={},p=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u534f\u8bae\u7b97\u6cd5",id:"\u4e09\u534f\u8bae\u7b97\u6cd5",level:2},{value:"\u56db\u3001\u4f7f\u7528",id:"\u56db\u4f7f\u7528",level:2}],d={toc:p};function u(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668\u662f\u5904\u7406\u7c98\u5305\u3001\u5206\u5305\u95ee\u9898\u7684\u6700\u6709\u529b\u3001\u6700\u53ef\u9760\u3001\u6700\u9ad8\u6548\u3001\u6700\u7a33\u5b9a\u7684\u4e00\u79cd\u65b9\u6848\uff0c\u5b83\u57fa\u672c\u4e0a\u9002\u7528\u4e8e",(0,a.kt)("strong",{parentName:"p"},"\u6240\u6709\u573a\u666f"),"\u3002\u5373\u4f7f",(0,a.kt)("strong",{parentName:"p"},"\u8de8\u8bed\u8a00"),"\u4f7f\u7528\uff0c\u4e5f\u53ea\u9700\u8981\u5728\u5176\u4ed6\u8bed\u8a00\u4e2d\u8bbe\u8ba1",(0,a.kt)("strong",{parentName:"p"},"\u76f8\u540c\u7b97\u6cd5"),"\u5c31\u53ef\u4ee5\u3002"),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u6700\u6709\u529b\u7684\u89e3\u51b3\u7c98\u5305\u3002\u5206\u5305\u95ee\u9898\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u662f\u81ea\u5b9a\u4e49\u534f\u8bae\u7684\u4e0d\u4e8c\u9009\u62e9\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u652f\u6301\u6307\u5b9a\u5305\u5934\u957f\u5ea6\uff0cByte\u3001Ushort\u3001Int\u4e09\u79cd\u7c7b\u578b\u4f5c\u4e3a\u5305\u5934\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u6700\u597d\u5728\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u4f7f\u7528TouchSocket\u7ec4\u4ef6\u65f6\u4f7f\u7528\u3002\u4e0d\u7136\u5c31\u9700\u8981\u975eTouchSocket\u7684\u4e00\u65b9\u9002\u914d\u5305\u5934\u7b97\u6cd5\u3002")),(0,a.kt)("h2",{id:"\u4e09\u534f\u8bae\u7b97\u6cd5"},"\u4e09\u3001\u534f\u8bae\u7b97\u6cd5"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Byte\u5305\u5934\u7b97\u6cd5\uff1a\u4ee5\u7b2c\u4e00\u4e2a\u5b57\u8282\u4f5c\u4e3a\u540e\u7eed\u6574\u4e2a\u6570\u636e\u7684\u957f\u5ea6\uff0c\u6574\u4e2a\u6570\u636e\u957f\u5ea6\u533a\u95f4\u4e3a","[0,255]","\u3002"),(0,a.kt)("li",{parentName:"ul"},"Ushort\u5305\u5934\u7b97\u6cd5\uff1a\u524d2\u4e2a\u5b57\u8282\uff0c\u4e14\u4e3a",(0,a.kt)("a",{parentName:"li",href:"/touchsocket/docs/touchsocketbitconverter#%E5%9B%9B%E9%BB%98%E8%AE%A4%E7%AB%AF"},"\u9ed8\u8ba4\u7aef\u5e8f\uff08\u5c0f\u7aef\uff09"),"\u7684\u6392\u5217\uff0c\u4f5c\u4e3a\u540e\u7eed\u6574\u4e2a\u6570\u636e\u7684\u957f\u5ea6\uff0c\u6574\u4e2a\u6570\u636e\u957f\u5ea6\u533a\u95f4\u4e3a","[0,65535]","\u3002"),(0,a.kt)("li",{parentName:"ul"},"Int\u5305\u5934\u7b97\u6cd5\uff08\u9ed8\u8ba4\u914d\u7f6e\uff09\uff1a\u524d4\u4e2a\u5b57\u8282\uff0c\u4e14\u4e3a",(0,a.kt)("a",{parentName:"li",href:"/touchsocket/docs/touchsocketbitconverter#%E5%9B%9B%E9%BB%98%E8%AE%A4%E7%AB%AF"},"\u9ed8\u8ba4\u7aef\u5e8f\uff08\u5c0f\u7aef\uff09"),"\u6392\u5217\uff0c\u4f5c\u4e3a\u540e\u7eed\u6574\u4e2a\u6570\u636e\u7684\u957f\u5ea6\uff0c\u6574\u4e2a\u6570\u636e\u957f\u5ea6\u533a\u95f4\u4e3a","[0,2^31]","\u3002")),(0,a.kt)("h2",{id:"\u56db\u4f7f\u7528"},"\u56db\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002\u4e0b\u5217\u4ee5\u670d\u52a1\u5668\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,"\u6b65\u9aa4"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"TouchSocketConfig\u914d\u7f6e\u4e2d\u8bbe\u7f6e\uff08\u53ef\u4ee5\u540c\u65f6\u6307\u5b9aHeaderType\u7b49\u5c5e\u6027\uff09"),(0,a.kt)("li",{parentName:"ol"},"\u901a\u8fc7Received\uff08\u4e8b\u4ef6\u3001\u65b9\u6cd5\u3001\u63d2\u4ef6\uff09\u4e2d\u7684ByteBlock\u8bfb\u53d6\u6570\u636e\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{10}","{10}":!0},"TcpService service = new TcpService();\nservice.Received += (client, byteBlock, requestInfo) =>\n{\n //\u4ece\u5ba2\u6237\u7aef\u6536\u5230\u4fe1\u606f\n string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost(7790) })\n .SetDataHandlingAdapter(() => { return new FixedHeaderPackageAdapter() { FixedHeaderType= FixedHeaderType.Int }; }))//\u914d\u7f6e\u9002\u914d\u5668\n .Start();//\u542f\u52a8\n")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff0c\u800c\u4e0d\u662fbyteBlock.Buffer.Length\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[2289],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>k});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},s=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=p(r),k=a,m=s["".concat(l,".").concat(k)]||s[k]||u[k]||o;return r?n.createElement(m,c(c({ref:t},d),{},{components:r})):n.createElement(m,c({ref:t},d))}));function k(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,c=new Array(o);c[0]=s;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i.mdxType="string"==typeof e?e:a,c[1]=i;for(var p=2;p<o;p++)c[p]=r[p];return n.createElement.apply(null,c)}return n.createElement.apply(null,r)}s.displayName="MDXCreateElement"},9574:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>c,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const o={id:"fixedheaderpackageadapter",title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},c=void 0,i={unversionedId:"fixedheaderpackageadapter",id:"fixedheaderpackageadapter",title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/fixedheaderpackageadapter.mdx",sourceDirName:".",slug:"/fixedheaderpackageadapter",permalink:"/touchsocket/docs/fixedheaderpackageadapter",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/fixedheaderpackageadapter.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1677212581,formattedLastUpdatedAt:"Feb 24, 2023",frontMatter:{id:"fixedheaderpackageadapter",title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},sidebar:"docs",previous:{title:"a.\u6b63\u5e38\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/normaldatahandlingadapter"},next:{title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/fixedsizepackageadapter"}},l={},p=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u534f\u8bae\u7b97\u6cd5",id:"\u4e09\u534f\u8bae\u7b97\u6cd5",level:2},{value:"\u56db\u3001\u4f7f\u7528",id:"\u56db\u4f7f\u7528",level:2}],d={toc:p};function u(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668\u662f\u5904\u7406\u7c98\u5305\u3001\u5206\u5305\u95ee\u9898\u7684\u6700\u6709\u529b\u3001\u6700\u53ef\u9760\u3001\u6700\u9ad8\u6548\u3001\u6700\u7a33\u5b9a\u7684\u4e00\u79cd\u65b9\u6848\uff0c\u5b83\u57fa\u672c\u4e0a\u9002\u7528\u4e8e",(0,a.kt)("strong",{parentName:"p"},"\u6240\u6709\u573a\u666f"),"\u3002\u5373\u4f7f",(0,a.kt)("strong",{parentName:"p"},"\u8de8\u8bed\u8a00"),"\u4f7f\u7528\uff0c\u4e5f\u53ea\u9700\u8981\u5728\u5176\u4ed6\u8bed\u8a00\u4e2d\u8bbe\u8ba1",(0,a.kt)("strong",{parentName:"p"},"\u76f8\u540c\u7b97\u6cd5"),"\u5c31\u53ef\u4ee5\u3002"),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u6700\u6709\u529b\u7684\u89e3\u51b3\u7c98\u5305\u3002\u5206\u5305\u95ee\u9898\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u662f\u81ea\u5b9a\u4e49\u534f\u8bae\u7684\u4e0d\u4e8c\u9009\u62e9\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u652f\u6301\u6307\u5b9a\u5305\u5934\u957f\u5ea6\uff0cByte\u3001Ushort\u3001Int\u4e09\u79cd\u7c7b\u578b\u4f5c\u4e3a\u5305\u5934\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u6700\u597d\u5728\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u4f7f\u7528TouchSocket\u7ec4\u4ef6\u65f6\u4f7f\u7528\u3002\u4e0d\u7136\u5c31\u9700\u8981\u975eTouchSocket\u7684\u4e00\u65b9\u9002\u914d\u5305\u5934\u7b97\u6cd5\u3002")),(0,a.kt)("h2",{id:"\u4e09\u534f\u8bae\u7b97\u6cd5"},"\u4e09\u3001\u534f\u8bae\u7b97\u6cd5"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"Byte\u5305\u5934\u7b97\u6cd5\uff1a\u4ee5\u7b2c\u4e00\u4e2a\u5b57\u8282\u4f5c\u4e3a\u540e\u7eed\u6574\u4e2a\u6570\u636e\u7684\u957f\u5ea6\uff0c\u6574\u4e2a\u6570\u636e\u957f\u5ea6\u533a\u95f4\u4e3a","[0,255]","\u3002"),(0,a.kt)("li",{parentName:"ul"},"Ushort\u5305\u5934\u7b97\u6cd5\uff1a\u524d2\u4e2a\u5b57\u8282\uff0c\u4e14\u4e3a",(0,a.kt)("a",{parentName:"li",href:"/touchsocket/docs/touchsocketbitconverter#%E5%9B%9B%E9%BB%98%E8%AE%A4%E7%AB%AF"},"\u9ed8\u8ba4\u7aef\u5e8f\uff08\u5c0f\u7aef\uff09"),"\u7684\u6392\u5217\uff0c\u4f5c\u4e3a\u540e\u7eed\u6574\u4e2a\u6570\u636e\u7684\u957f\u5ea6\uff0c\u6574\u4e2a\u6570\u636e\u957f\u5ea6\u533a\u95f4\u4e3a","[0,65535]","\u3002"),(0,a.kt)("li",{parentName:"ul"},"Int\u5305\u5934\u7b97\u6cd5\uff08\u9ed8\u8ba4\u914d\u7f6e\uff09\uff1a\u524d4\u4e2a\u5b57\u8282\uff0c\u4e14\u4e3a",(0,a.kt)("a",{parentName:"li",href:"/touchsocket/docs/touchsocketbitconverter#%E5%9B%9B%E9%BB%98%E8%AE%A4%E7%AB%AF"},"\u9ed8\u8ba4\u7aef\u5e8f\uff08\u5c0f\u7aef\uff09"),"\u6392\u5217\uff0c\u4f5c\u4e3a\u540e\u7eed\u6574\u4e2a\u6570\u636e\u7684\u957f\u5ea6\uff0c\u6574\u4e2a\u6570\u636e\u957f\u5ea6\u533a\u95f4\u4e3a","[0,2^31]","\u3002")),(0,a.kt)("h2",{id:"\u56db\u4f7f\u7528"},"\u56db\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002\u4e0b\u5217\u4ee5\u670d\u52a1\u5668\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,"\u6b65\u9aa4"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"TouchSocketConfig\u914d\u7f6e\u4e2d\u8bbe\u7f6e\uff08\u53ef\u4ee5\u540c\u65f6\u6307\u5b9aHeaderType\u7b49\u5c5e\u6027\uff09"),(0,a.kt)("li",{parentName:"ol"},"\u901a\u8fc7Received\uff08\u4e8b\u4ef6\u3001\u65b9\u6cd5\u3001\u63d2\u4ef6\uff09\u4e2d\u7684ByteBlock\u8bfb\u53d6\u6570\u636e\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{10}","{10}":!0},"TcpService service = new TcpService();\nservice.Received += (client, byteBlock, requestInfo) =>\n{\n //\u4ece\u5ba2\u6237\u7aef\u6536\u5230\u4fe1\u606f\n string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost(7790) })\n .SetDataHandlingAdapter(() => { return new FixedHeaderPackageAdapter() { FixedHeaderType= FixedHeaderType.Int }; }))//\u914d\u7f6e\u9002\u914d\u5668\n .Start();//\u542f\u52a8\n")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5728\u53d1\u9001\uff08Send\u3001SendAsync\uff09\u6570\u636e\u65f6\uff0c\u4f1a\u81ea\u52a8\u5c01\u88c5\u6570\u636e\u5934\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u624b\u52a8\u5c01\u88c5\u3002\u5982\u679c\u60f3\u8981\u53d1\u9001\u624b\u52a8\u7ec4\u88c5\u7684\u6570\u636e\uff0c\u8bf7\u4f7f\u7528DefaultSend\u3002")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff0c\u800c\u4e0d\u662fbyteBlock.Buffer.Length\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[8560],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),u=l(n),m=o,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,a(a({ref:t},c),{},{components:n})):r.createElement(f,a({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=u;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p.mdxType="string"==typeof e?e:o,a[1]=p;for(var l=2;l<i;l++)a[l]=n[l];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},6852:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));const i={id:"udpwaitingclient",title:"Udp\u540c\u6b65\u8bf7\u6c42"},a=void 0,p={unversionedId:"udpwaitingclient",id:"udpwaitingclient",title:"Udp\u540c\u6b65\u8bf7\u6c42",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/udpwaitingclient.mdx",sourceDirName:".",slug:"/udpwaitingclient",permalink:"/touchsocket/docs/udpwaitingclient",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/udpwaitingclient.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1676955479,formattedLastUpdatedAt:"Feb 21, 2023",frontMatter:{id:"udpwaitingclient",title:"Udp\u540c\u6b65\u8bf7\u6c42"},sidebar:"docs",previous:{title:"\u521b\u5efaUdpSession",permalink:"/touchsocket/docs/createudpsession"},next:{title:"\u4f20\u8f93\u5927\u4e8e64K\u7684\u6570\u636e",permalink:"/touchsocket/docs/udptransmitbigdata"}},s={},l=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u521b\u5efa\u53ca\u4f7f\u7528",id:"\u4e8c\u521b\u5efa\u53ca\u4f7f\u7528",level:2},{value:"2.1 \u4ee5UdpSession\u4e3a\u4f8b",id:"21-\u4ee5udpsession\u4e3a\u4f8b",level:3}],c={toc:l};function d(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,o.kt)("p",null,"\u6709\u5f88\u591a\u5c0f\u4f19\u4f34\u5bf9\u4e8eUdp\u4e00\u76f4\u6709\u4e00\u4e9b\u9700\u6c42\uff1a"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u53d1\u9001\u4e00\u4e2a\u6570\u636e\uff0c\u7136\u540e\u7b49\u5f85\u670d\u52a1\u5668\u56de\u5e94\u3002"),(0,o.kt)("li",{parentName:"ol"},"\u670d\u52a1\u5668\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u4e00\u4e2a\u6570\u636e\uff0c\u7136\u540e\u7b49\u5f85\u5ba2\u6237\u7aef\u56de\u5e94\u3002")),(0,o.kt)("p",null,"\u90a3\u9488\u5bf9\u8fd9\u4e9b\u9700\u6c42\uff0c\u53ef\u4ee5\u4f7f\u7528",(0,o.kt)("strong",{parentName:"p"},"WaitingClient\u3002"),"\u5176\u5185\u90e8\u5b9e\u73b0\u4e86",(0,o.kt)("strong",{parentName:"p"},"IWaitSender"),"\u63a5\u53e3\uff0c\u80fd\u591f\u5728\u53d1\u9001\u5b8c\u6210\u540e\uff0c\u7b49\u5f85\u8fd4\u56de\u3002"),(0,o.kt)("h2",{id:"\u4e8c\u521b\u5efa\u53ca\u4f7f\u7528"},"\u4e8c\u3001\u521b\u5efa\u53ca\u4f7f\u7528"),(0,o.kt)("h3",{id:"21-\u4ee5udpsession\u4e3a\u4f8b"},"2.1 \u4ee5UdpSession\u4e3a\u4f8b"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'UdpSession udpSession = new UdpSession();\nvar config = new TouchSocketConfig()\n .SetBindIPHost(new IPHost(0))//\u5fc5\u8981\u8bbe\u7f6e\n .SetRemoteIPHost(new IPHost("127.0.0.1:7789"));//\u53ef\u4ee5\u4e0d\u8bbe\u7f6e\n\n//\u8f7d\u5165\u914d\u7f6e\nudpSession.Setup(config);\nudpSession.Start();\n\n//\u8c03\u7528GetWaitingClient\u83b7\u53d6\u5230IWaitingClient\u7684\u5bf9\u8c61\u3002\nvar waitClient = udpSession.GetWaitingClient(new WaitingOptions()\n{\n AdapterFilter = AdapterFilter.AllAdapter,//\u8868\u793a\u53d1\u9001\u548c\u63a5\u6536\u7684\u6570\u636e\u90fd\u4f1a\u7ecf\u8fc7\u9002\u914d\u5668\n RemoteIPHost = new IPHost("127.0.0.1:7799")//\u8868\u793a\u76ee\u7684\u5730\u5740\n});\n\n//\u7136\u540e\u4f7f\u7528SendThenReturn\u3002\nbyte[] returnData = waitClient.SendThenReturn(Encoding.UTF8.GetBytes("RRQM"));\nudpSession.Logger.Info($"\u6536\u5230\u56de\u5e94\u6d88\u606f\uff1a{Encoding.UTF8.GetString(returnData)}");\n\n//\u540c\u65f6\uff0c\u5982\u679c\u9002\u914d\u5668\u6536\u5230\u6570\u636e\u540e\uff0c\u8fd4\u56de\u7684\u5e76\u4e0d\u662f\u5b57\u8282\uff0c\u800c\u662fIRequestInfo\u5bf9\u8c61\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528SendThenResponse.\nResponsedData responsedData = waitClient.SendThenResponse(Encoding.UTF8.GetBytes("RRQM"));\nIRequestInfo requestInfo = responsedData.RequestInfo;//\u540c\u6b65\u6536\u5230\u7684RequestInfo\n')),(0,o.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Udp\u7684\u540c\u6b65\u8bf7\u6c42\uff0c\u6709\u4e24\u79cd\u7b56\u7565\uff0c\u4e00\u79cd\u5219\u662f\u5728\u914d\u7f6e\u4e2d\u8bbe\u7f6e",(0,o.kt)("strong",{parentName:"p"},"SetRemoteIPHost"),"\uff0c\u7136\u540e\u5728",(0,o.kt)("strong",{parentName:"p"},"GetWaitingClient"),"\u65f6\u5219\u4e0d\u5fc5\u518d\u8bbe\u7f6eRemoteIPHost\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e00\u822c\u9002\u7528\u4e8e\u5ba2\u6237\u7aef\u3002\u7b2c\u4e8c\u79cd\u5219\u662f\u4e0d\u914d\u7f6e",(0,o.kt)("strong",{parentName:"p"},"SetRemoteIPHost"),"\uff0c\u7136\u540e\u5728",(0,o.kt)("strong",{parentName:"p"},"GetWaitingClient"),"\u65f6\u8bbe\u7f6eRemoteIPHost\uff0c\u8fd9\u79cd\u60c5\u51b5\u9002\u7528\u4e8e\u670d\u52a1\u5668\u3002")),(0,o.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5728SendThenReturn\u65f6\uff0c\u901a\u8fc7\u5176\u4ed6\u53c2\u6570\uff0c\u8fd8\u53ef\u4ee5\u8bbe\u7f6eTimeout\uff0c\u4ee5\u53ca\u53ef\u53d6\u6d88\u7684\u7b49\u5f85Token\u3002")),(0,o.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5b9e\u9645\u4e0a\u4e0a\u8ff0\u884c\u4e3a\uff0c\u53ea\u8981\u5b9e\u73b0IClient, IDefaultSender, ISend\u4e09\u4e2a\u63a5\u53e3\u7684\u7c7b\u5747\u53ef\u4ee5\u4f7f\u7528\u3002")),(0,o.kt)("admonition",{title:"\u6ce8\u610f\u4e8b\u9879",type:"danger"},(0,o.kt)("ol",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ol"},"\u53d1\u9001\u5b8c\u6570\u636e\uff0c\u5728\u7b49\u5f85\u65f6\uff0c\u5982\u679c\u6536\u5230\u5176\u4ed6\u8fd4\u56de\u6570\u636e\uff0c\u5219\u53ef\u80fd\u5f97\u5230\u9519\u8bef\u7ed3\u679c\u3002"),(0,o.kt)("li",{parentName:"ol"},"\u53d1\u9001\u91c7\u7528Lock\u9501\uff0c\u4e00\u4e2a\u4e8b\u52a1\u6ca1\u7ed3\u675f\uff0c\u53e6\u4e00\u4e2a\u8bf7\u6c42\u4e5f\u53d1\u4e0d\u51fa\u53bb\u3002"))))}d.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[8560],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function p(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},i=Object.keys(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)n=i[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=r.createContext({}),l=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=l(e.components);return r.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,c=p(e,["components","mdxType","originalType","parentName"]),u=l(n),m=o,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||i;return n?r.createElement(f,a(a({ref:t},c),{},{components:n})):r.createElement(f,a({ref:t},c))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=u;var p={};for(var s in t)hasOwnProperty.call(t,s)&&(p[s]=t[s]);p.originalType=e,p.mdxType="string"==typeof e?e:o,a[1]=p;for(var l=2;l<i;l++)a[l]=n[l];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},6852:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>p,toc:()=>l});var r=n(7462),o=(n(7294),n(3905));const i={id:"udpwaitingclient",title:"Udp\u540c\u6b65\u8bf7\u6c42"},a=void 0,p={unversionedId:"udpwaitingclient",id:"udpwaitingclient",title:"Udp\u540c\u6b65\u8bf7\u6c42",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/udpwaitingclient.mdx",sourceDirName:".",slug:"/udpwaitingclient",permalink:"/touchsocket/docs/udpwaitingclient",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/udpwaitingclient.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1676959929,formattedLastUpdatedAt:"Feb 21, 2023",frontMatter:{id:"udpwaitingclient",title:"Udp\u540c\u6b65\u8bf7\u6c42"},sidebar:"docs",previous:{title:"\u521b\u5efaUdpSession",permalink:"/touchsocket/docs/createudpsession"},next:{title:"\u4f20\u8f93\u5927\u4e8e64K\u7684\u6570\u636e",permalink:"/touchsocket/docs/udptransmitbigdata"}},s={},l=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u521b\u5efa\u53ca\u4f7f\u7528",id:"\u4e8c\u521b\u5efa\u53ca\u4f7f\u7528",level:2},{value:"2.1 \u4ee5UdpSession\u4e3a\u4f8b",id:"21-\u4ee5udpsession\u4e3a\u4f8b",level:3}],c={toc:l};function d(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,o.kt)("p",null,"\u6709\u5f88\u591a\u5c0f\u4f19\u4f34\u5bf9\u4e8eUdp\u4e00\u76f4\u6709\u4e00\u4e9b\u9700\u6c42\uff1a"),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"\u5ba2\u6237\u7aef\u53d1\u9001\u4e00\u4e2a\u6570\u636e\uff0c\u7136\u540e\u7b49\u5f85\u670d\u52a1\u5668\u56de\u5e94\u3002"),(0,o.kt)("li",{parentName:"ol"},"\u670d\u52a1\u5668\u5411\u5ba2\u6237\u7aef\u53d1\u9001\u4e00\u4e2a\u6570\u636e\uff0c\u7136\u540e\u7b49\u5f85\u5ba2\u6237\u7aef\u56de\u5e94\u3002")),(0,o.kt)("p",null,"\u90a3\u9488\u5bf9\u8fd9\u4e9b\u9700\u6c42\uff0c\u53ef\u4ee5\u4f7f\u7528",(0,o.kt)("strong",{parentName:"p"},"WaitingClient\u3002"),"\u5176\u5185\u90e8\u5b9e\u73b0\u4e86",(0,o.kt)("strong",{parentName:"p"},"IWaitSender"),"\u63a5\u53e3\uff0c\u80fd\u591f\u5728\u53d1\u9001\u5b8c\u6210\u540e\uff0c\u7b49\u5f85\u8fd4\u56de\u3002"),(0,o.kt)("h2",{id:"\u4e8c\u521b\u5efa\u53ca\u4f7f\u7528"},"\u4e8c\u3001\u521b\u5efa\u53ca\u4f7f\u7528"),(0,o.kt)("h3",{id:"21-\u4ee5udpsession\u4e3a\u4f8b"},"2.1 \u4ee5UdpSession\u4e3a\u4f8b"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'UdpSession udpSession = new UdpSession();\nvar config = new TouchSocketConfig()\n .SetBindIPHost(new IPHost(0))//\u5fc5\u8981\u8bbe\u7f6e\n .SetRemoteIPHost(new IPHost("127.0.0.1:7789"));//\u53ef\u4ee5\u4e0d\u8bbe\u7f6e\n\n//\u8f7d\u5165\u914d\u7f6e\nudpSession.Setup(config);\nudpSession.Start();\n\n//\u8c03\u7528GetWaitingClient\u83b7\u53d6\u5230IWaitingClient\u7684\u5bf9\u8c61\u3002\nvar waitClient = udpSession.GetWaitingClient(new WaitingOptions()\n{\n AdapterFilter = AdapterFilter.AllAdapter,//\u8868\u793a\u53d1\u9001\u548c\u63a5\u6536\u7684\u6570\u636e\u90fd\u4f1a\u7ecf\u8fc7\u9002\u914d\u5668\n RemoteIPHost = new IPHost("127.0.0.1:7799")//\u8868\u793a\u76ee\u7684\u5730\u5740\n});\n\n//\u7136\u540e\u4f7f\u7528SendThenReturn\u3002\nbyte[] returnData = waitClient.SendThenReturn(Encoding.UTF8.GetBytes("RRQM"));\nudpSession.Logger.Info($"\u6536\u5230\u56de\u5e94\u6d88\u606f\uff1a{Encoding.UTF8.GetString(returnData)}");\n\n//\u540c\u65f6\uff0c\u5982\u679c\u9002\u914d\u5668\u6536\u5230\u6570\u636e\u540e\uff0c\u8fd4\u56de\u7684\u5e76\u4e0d\u662f\u5b57\u8282\uff0c\u800c\u662fIRequestInfo\u5bf9\u8c61\u65f6\uff0c\u53ef\u4ee5\u4f7f\u7528SendThenResponse.\nResponsedData responsedData = waitClient.SendThenResponse(Encoding.UTF8.GetBytes("RRQM"));\nIRequestInfo requestInfo = responsedData.RequestInfo;//\u540c\u6b65\u6536\u5230\u7684RequestInfo\n')),(0,o.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"Udp\u7684\u540c\u6b65\u8bf7\u6c42\uff0c\u6709\u4e24\u79cd\u7b56\u7565\uff0c\u4e00\u79cd\u5219\u662f\u5728\u914d\u7f6e\u4e2d\u8bbe\u7f6e",(0,o.kt)("strong",{parentName:"p"},"SetRemoteIPHost"),"\uff0c\u7136\u540e\u5728",(0,o.kt)("strong",{parentName:"p"},"GetWaitingClient"),"\u65f6\u5219\u4e0d\u5fc5\u518d\u8bbe\u7f6eRemoteIPHost\uff0c\u8fd9\u79cd\u60c5\u51b5\u4e00\u822c\u9002\u7528\u4e8e\u5ba2\u6237\u7aef\u3002\u7b2c\u4e8c\u79cd\u5219\u662f\u4e0d\u914d\u7f6e",(0,o.kt)("strong",{parentName:"p"},"SetRemoteIPHost"),"\uff0c\u7136\u540e\u5728",(0,o.kt)("strong",{parentName:"p"},"GetWaitingClient"),"\u65f6\u8bbe\u7f6eRemoteIPHost\uff0c\u8fd9\u79cd\u60c5\u51b5\u9002\u7528\u4e8e\u670d\u52a1\u5668\u3002")),(0,o.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5728SendThenReturn\u65f6\uff0c\u901a\u8fc7\u5176\u4ed6\u53c2\u6570\uff0c\u8fd8\u53ef\u4ee5\u8bbe\u7f6eTimeout\uff0c\u4ee5\u53ca\u53ef\u53d6\u6d88\u7684\u7b49\u5f85Token\u3002")),(0,o.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u5b9e\u9645\u4e0a\u4e0a\u8ff0\u884c\u4e3a\uff0c\u53ea\u8981\u5b9e\u73b0IClient, IDefaultSender, ISend\u4e09\u4e2a\u63a5\u53e3\u7684\u7c7b\u5747\u53ef\u4ee5\u4f7f\u7528\u3002")),(0,o.kt)("admonition",{title:"\u6ce8\u610f\u4e8b\u9879",type:"danger"},(0,o.kt)("ol",{parentName:"admonition"},(0,o.kt)("li",{parentName:"ol"},"\u53d1\u9001\u5b8c\u6570\u636e\uff0c\u5728\u7b49\u5f85\u65f6\uff0c\u5982\u679c\u6536\u5230\u5176\u4ed6\u8fd4\u56de\u6570\u636e\uff0c\u5219\u53ef\u80fd\u5f97\u5230\u9519\u8bef\u7ed3\u679c\u3002"),(0,o.kt)("li",{parentName:"ol"},"\u53d1\u9001\u91c7\u7528Lock\u9501\uff0c\u4e00\u4e2a\u4e8b\u52a1\u6ca1\u7ed3\u675f\uff0c\u53e6\u4e00\u4e2a\u8bf7\u6c42\u4e5f\u53d1\u4e0d\u51fa\u53bb\u3002"))))}d.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[4747],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(n),k=o,g=d["".concat(c,".").concat(k)]||d[k]||u[k]||a;return n?r.createElement(g,l(l({ref:t},p),{},{components:n})):r.createElement(g,l({ref:t},p))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:o,l[1]=i;for(var s=2;s<a;s++)l[s]=n[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2525:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));const a={id:"websocketverify",title:"\u8fde\u63a5\u9a8c\u8bc1"},l=void 0,i={unversionedId:"websocketverify",id:"websocketverify",title:"\u8fde\u63a5\u9a8c\u8bc1",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/websocketverify.mdx",sourceDirName:".",slug:"/websocketverify",permalink:"/touchsocket/docs/websocketverify",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/websocketverify.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1676451899,formattedLastUpdatedAt:"Feb 15, 2023",frontMatter:{id:"websocketverify",title:"\u8fde\u63a5\u9a8c\u8bc1"},sidebar:"docs",previous:{title:"\u521b\u5efaWebSocket\u5ba2\u6237\u7aef",permalink:"/touchsocket/docs/createwebsocketclient"},next:{title:"WSCommandLinePlugin",permalink:"/touchsocket/docs/wscommandlineplugin"}},c={},s=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u670d\u52a1\u7aef\u9a8c\u8bc1",id:"\u4e8c\u670d\u52a1\u7aef\u9a8c\u8bc1",level:2},{value:"2.1 \u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1",id:"21-\u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1",level:3},{value:"2.2 WebApi\u8fde\u63a5\u9a8c\u8bc1",id:"22-webapi\u8fde\u63a5\u9a8c\u8bc1",level:3},{value:"\u4e09\u3001\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1",id:"\u4e09\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1",level:2},{value:"3.1 Url\u5305\u542b\u8bf7\u6c42\u53c2\u6570",id:"31-url\u5305\u542b\u8bf7\u6c42\u53c2\u6570",level:3}],p={toc:s};function u(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,o.kt)("p",null,"\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u4e3a\u5b89\u5168\u9a8c\u8bc1\uff0cwebsocket\u90fd\u4f1a\u5728\u8fde\u63a5\u65f6\u8fdb\u884c\u9a8c\u8bc1\uff0c\u53ef\u80fd\u901a\u8fc7\u8d26\u53f7\u3001\u5bc6\u7801\uff0c\u4e5f\u53ef\u80fd\u901a\u8fc7token\u7b49\u3002"),(0,o.kt)("h2",{id:"\u4e8c\u670d\u52a1\u7aef\u9a8c\u8bc1"},"\u4e8c\u3001\u670d\u52a1\u7aef\u9a8c\u8bc1"),(0,o.kt)("h3",{id:"21-\u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1"},"2.1 \u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1"),(0,o.kt)("p",null,"\u65b0\u5efa\u4e00\u4e2a\u63d2\u4ef6\uff0c\u7528\u4e8e\u5904\u7406\u8fde\u63a5\u9a8c\u8bc1\u3002\u540c\u65f6\u4e5f\u5904\u7406\u6536\u5230\u7684\u4fe1\u606f\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'class MyWebSocketPlugin : WebSocketPluginBase<HttpSocketClient>\n{\n protected override void OnHandshaking(HttpSocketClient client, HttpContextEventArgs e)\n {\n if (e.Context.Request.Query["token"]!="123")\n {\n e.IsPermitOperation = false; //\u53c2\u6570\u4e0d\u7b26\u5408\uff0c\u76f4\u63a5\u62d2\u7edd\n e.Handled = true;//\u8868\u793a\u8be5\u6761\u6d88\u606f\u5df2\u88ab\u672c\u63d2\u4ef6\u5904\u7406\uff0c\u4e0d\u9700\u8981\u5728\u5411\u5176\u4ed6\u63d2\u4ef6\u6295\u9012\u4e86\u3002\n return;\n\n //\u6216\u8005\u76f4\u63a5\u56de\u590d\uff0c\u6b64\u5904\u90e8\u5206\u548chttp\u64cd\u4f5c\u4e00\u81f4\u3002\n e.Context.Response\n .SetStatus("400", "\u53e3\u4ee4\u4e0d\u6b63\u786e")\n .Answer();\n\n }\n base.OnHandshaking(client, e);\n }\n\n protected override void OnHandleWSDataFrame(HttpSocketClient client, WSDataFrameEventArgs e)\n {\n if (e.DataFrame.Opcode == WSDataType.Text)//\u6587\u672c\u6570\u636e\n {\n client.Logger.Info($"\u6536\u5230\u4fe1\u606f\uff1a{e.DataFrame.ToText()}");\n }\n else if (e.DataFrame.Opcode == WSDataType.Binary)//\u4e8c\u8fdb\u5236\n {\n byte[] data = e.DataFrame.PayloadData.ToArray();\n }\n }\n}\n\n')),(0,o.kt)("p",null,"\u521b\u5efa\u670d\u52a1\u5668"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new HttpService();\nservice.Setup(new TouchSocketConfig()//\u52a0\u8f7d\u914d\u7f6e\n .UsePlugin()\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n })\n .ConfigurePlugins(a =>\n {\n a.UseWebSocket()//\u6dfb\u52a0WebSocket\u529f\u80fd\n .SetWSUrl("/ws");\n //.SetCallback(WSCallback);//WSCallback\u56de\u8c03\u51fd\u6570\u662f\u5728WS\u6536\u5230\u6570\u636e\u65f6\u89e6\u53d1\u56de\u8c03\u7684\u3002\u4e0b\u9762\u4f1a\u7528\u63d2\u4ef6\uff0c\u6240\u4ee5\u6211\u4eec\u4e0d\u4f7f\u7528\u8fd9\u79cd\u65b9\u5f0f\n a.Add<MyWebSocketPlugin>();//MyWebSocketPlugin\u662f\u7ee7\u627f\u81eaWebSocketPluginBase\u7684\u63d2\u4ef6\u3002\n }))\n .Start();\n\nservice.Logger.Info("Http\u670d\u52a1\u5668\u5df2\u542f\u52a8");\nservice.Logger.Info("\u8fde\u63a5url\uff1aws://127.0.0.1:7789/ws?token=123");\n')),(0,o.kt)("h3",{id:"22-webapi\u8fde\u63a5\u9a8c\u8bc1"},"2.2 WebApi\u8fde\u63a5\u9a8c\u8bc1"),(0,o.kt)("p",null,"\u521b\u5efa\u4e00\u4e2aWebApi\u670d\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'public class MyServer : RpcServer\n{\n private readonly ILog m_logger;\n\n public MyServer(ILog logger)\n {\n this.m_logger = logger;\n }\n\n [WebApi(HttpMethodType.GET, MethodFlags = MethodFlags.IncludeCallContext)]\n public void ConnectWS(IWebApiCallContext callContext, string token)\n {\n if (token != "123")\n {\n callContext.HttpContext.Response\n .SetStatus("400", "\u53e3\u4ee4\u4e0d\u6b63\u786e")\n .Answer();\n return;\n }\n //\u4e0b\u9762\u8fdb\u884c\u8fde\u63a5\n if (callContext.Caller is HttpSocketClient socketClient)\n {\n if (socketClient.SwitchProtocolToWebSocket(callContext.HttpContext))\n {\n m_logger.Info("WS\u901a\u8fc7WebApi\u8fde\u63a5");\n }\n }\n }\n}\n')),(0,o.kt)("p",null,"\u542f\u52a8\u670d\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new HttpService();\nservice.Setup(new TouchSocketConfig()//\u52a0\u8f7d\u914d\u7f6e\n .UsePlugin()\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n })\n .ConfigureRpcStore(a =>\n {\n a.RegisterServer<MyServer>();\n })\n .ConfigurePlugins(a =>\n {\n a.UseWebApi();\n a.UseWebSocket();//\u4e0d\u7528\u8bbe\u7f6e\u8fde\u63a5url\n }))\n .Start();\n\nConsole.WriteLine("\u670d\u52a1\u5668\u5df2\u542f\u52a8\uff0c\u53ef\u4f7f\u7528\u4e0b\u5217\u5730\u5740\u8fde\u63a5");\nConsole.WriteLine("ws://127.0.0.1:7789/MyServer/ConnectWS?token=123");\n')),(0,o.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u4f7f\u7528WebApi\u8fdb\u884cWebsocket\u8fde\u63a5\u9a8c\u8bc1\u65f6\uff0c\u662f\u6700\u7075\u6d3b\u7684\uff0c\u800c\u4e14\u5982\u679c\u53ef\u80fd\uff0cWebsocket\u4e5f\u53ef\u4ee5\u901a\u8fc7Post\u8fde\u63a5\u9a8c\u8bc1\u3002")),(0,o.kt)("h2",{id:"\u4e09\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1"},"\u4e09\u3001\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1"),(0,o.kt)("h3",{id:"31-url\u5305\u542b\u8bf7\u6c42\u53c2\u6570"},"3.1 Url\u5305\u542b\u8bf7\u6c42\u53c2\u6570"),(0,o.kt)("p",null,"\u8bf7\u6c42\u9a8c\u8bc1\u65f6\uff0c\u8bf7\u6c42\u7684\u53c2\u6570\u5168\u90e8\u5305\u542b\u5728"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'WebSocketClient myWSClient = new WebSocketClient();\nmyWSClient.Setup(new TouchSocketConfig()\n .SetRemoteIPHost("ws://127.0.0.1:7789/ws?token=1232")\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n }));\nvar result= myWSClient.TryConnect();\n\nmyWSClient.Logger.Info(result.ToString());\n\n')),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/WebSocket%E7%AE%80%E5%8D%95%E7%A4%BA%E4%BE%8B/WS%E8%BF%9E%E6%8E%A5%E9%AA%8C%E8%AF%81/WSVerifyConsoleApp"},"Websocket\u8fde\u63a5\u9a8c\u8bc1\u793a\u4f8b")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[4747],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>k});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){o(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,o=function(e,t){if(null==e)return{};var n,r,o={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=s(n),k=o,g=d["".concat(c,".").concat(k)]||d[k]||u[k]||a;return n?r.createElement(g,l(l({ref:t},p),{},{components:n})):r.createElement(g,l({ref:t},p))}));function k(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,l=new Array(a);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:o,l[1]=i;for(var s=2;s<a;s++)l[s]=n[s];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},2525:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>s});var r=n(7462),o=(n(7294),n(3905));const a={id:"websocketverify",title:"\u8fde\u63a5\u9a8c\u8bc1"},l=void 0,i={unversionedId:"websocketverify",id:"websocketverify",title:"\u8fde\u63a5\u9a8c\u8bc1",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/websocketverify.mdx",sourceDirName:".",slug:"/websocketverify",permalink:"/touchsocket/docs/websocketverify",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/websocketverify.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1676451899,formattedLastUpdatedAt:"Feb 15, 2023",frontMatter:{id:"websocketverify",title:"\u8fde\u63a5\u9a8c\u8bc1"},sidebar:"docs",previous:{title:"\u521b\u5efaWebSocket\u5ba2\u6237\u7aef",permalink:"/touchsocket/docs/createwebsocketclient"},next:{title:"Websocket\u5fc3\u8df3\u8bbe\u7f6e",permalink:"/touchsocket/docs/websocketheartbeat"}},c={},s=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u670d\u52a1\u7aef\u9a8c\u8bc1",id:"\u4e8c\u670d\u52a1\u7aef\u9a8c\u8bc1",level:2},{value:"2.1 \u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1",id:"21-\u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1",level:3},{value:"2.2 WebApi\u8fde\u63a5\u9a8c\u8bc1",id:"22-webapi\u8fde\u63a5\u9a8c\u8bc1",level:3},{value:"\u4e09\u3001\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1",id:"\u4e09\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1",level:2},{value:"3.1 Url\u5305\u542b\u8bf7\u6c42\u53c2\u6570",id:"31-url\u5305\u542b\u8bf7\u6c42\u53c2\u6570",level:3}],p={toc:s};function u(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,o.kt)("p",null,"\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u4e3a\u5b89\u5168\u9a8c\u8bc1\uff0cwebsocket\u90fd\u4f1a\u5728\u8fde\u63a5\u65f6\u8fdb\u884c\u9a8c\u8bc1\uff0c\u53ef\u80fd\u901a\u8fc7\u8d26\u53f7\u3001\u5bc6\u7801\uff0c\u4e5f\u53ef\u80fd\u901a\u8fc7token\u7b49\u3002"),(0,o.kt)("h2",{id:"\u4e8c\u670d\u52a1\u7aef\u9a8c\u8bc1"},"\u4e8c\u3001\u670d\u52a1\u7aef\u9a8c\u8bc1"),(0,o.kt)("h3",{id:"21-\u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1"},"2.1 \u5e38\u89c4\u63d2\u4ef6\u9a8c\u8bc1"),(0,o.kt)("p",null,"\u65b0\u5efa\u4e00\u4e2a\u63d2\u4ef6\uff0c\u7528\u4e8e\u5904\u7406\u8fde\u63a5\u9a8c\u8bc1\u3002\u540c\u65f6\u4e5f\u5904\u7406\u6536\u5230\u7684\u4fe1\u606f\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'class MyWebSocketPlugin : WebSocketPluginBase<HttpSocketClient>\n{\n protected override void OnHandshaking(HttpSocketClient client, HttpContextEventArgs e)\n {\n if (e.Context.Request.Query["token"]!="123")\n {\n e.IsPermitOperation = false; //\u53c2\u6570\u4e0d\u7b26\u5408\uff0c\u76f4\u63a5\u62d2\u7edd\n e.Handled = true;//\u8868\u793a\u8be5\u6761\u6d88\u606f\u5df2\u88ab\u672c\u63d2\u4ef6\u5904\u7406\uff0c\u4e0d\u9700\u8981\u5728\u5411\u5176\u4ed6\u63d2\u4ef6\u6295\u9012\u4e86\u3002\n return;\n\n //\u6216\u8005\u76f4\u63a5\u56de\u590d\uff0c\u6b64\u5904\u90e8\u5206\u548chttp\u64cd\u4f5c\u4e00\u81f4\u3002\n e.Context.Response\n .SetStatus("400", "\u53e3\u4ee4\u4e0d\u6b63\u786e")\n .Answer();\n\n }\n base.OnHandshaking(client, e);\n }\n\n protected override void OnHandleWSDataFrame(HttpSocketClient client, WSDataFrameEventArgs e)\n {\n if (e.DataFrame.Opcode == WSDataType.Text)//\u6587\u672c\u6570\u636e\n {\n client.Logger.Info($"\u6536\u5230\u4fe1\u606f\uff1a{e.DataFrame.ToText()}");\n }\n else if (e.DataFrame.Opcode == WSDataType.Binary)//\u4e8c\u8fdb\u5236\n {\n byte[] data = e.DataFrame.PayloadData.ToArray();\n }\n }\n}\n\n')),(0,o.kt)("p",null,"\u521b\u5efa\u670d\u52a1\u5668"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new HttpService();\nservice.Setup(new TouchSocketConfig()//\u52a0\u8f7d\u914d\u7f6e\n .UsePlugin()\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n })\n .ConfigurePlugins(a =>\n {\n a.UseWebSocket()//\u6dfb\u52a0WebSocket\u529f\u80fd\n .SetWSUrl("/ws");\n //.SetCallback(WSCallback);//WSCallback\u56de\u8c03\u51fd\u6570\u662f\u5728WS\u6536\u5230\u6570\u636e\u65f6\u89e6\u53d1\u56de\u8c03\u7684\u3002\u4e0b\u9762\u4f1a\u7528\u63d2\u4ef6\uff0c\u6240\u4ee5\u6211\u4eec\u4e0d\u4f7f\u7528\u8fd9\u79cd\u65b9\u5f0f\n a.Add<MyWebSocketPlugin>();//MyWebSocketPlugin\u662f\u7ee7\u627f\u81eaWebSocketPluginBase\u7684\u63d2\u4ef6\u3002\n }))\n .Start();\n\nservice.Logger.Info("Http\u670d\u52a1\u5668\u5df2\u542f\u52a8");\nservice.Logger.Info("\u8fde\u63a5url\uff1aws://127.0.0.1:7789/ws?token=123");\n')),(0,o.kt)("h3",{id:"22-webapi\u8fde\u63a5\u9a8c\u8bc1"},"2.2 WebApi\u8fde\u63a5\u9a8c\u8bc1"),(0,o.kt)("p",null,"\u521b\u5efa\u4e00\u4e2aWebApi\u670d\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'public class MyServer : RpcServer\n{\n private readonly ILog m_logger;\n\n public MyServer(ILog logger)\n {\n this.m_logger = logger;\n }\n\n [WebApi(HttpMethodType.GET, MethodFlags = MethodFlags.IncludeCallContext)]\n public void ConnectWS(IWebApiCallContext callContext, string token)\n {\n if (token != "123")\n {\n callContext.HttpContext.Response\n .SetStatus("400", "\u53e3\u4ee4\u4e0d\u6b63\u786e")\n .Answer();\n return;\n }\n //\u4e0b\u9762\u8fdb\u884c\u8fde\u63a5\n if (callContext.Caller is HttpSocketClient socketClient)\n {\n if (socketClient.SwitchProtocolToWebSocket(callContext.HttpContext))\n {\n m_logger.Info("WS\u901a\u8fc7WebApi\u8fde\u63a5");\n }\n }\n }\n}\n')),(0,o.kt)("p",null,"\u542f\u52a8\u670d\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new HttpService();\nservice.Setup(new TouchSocketConfig()//\u52a0\u8f7d\u914d\u7f6e\n .UsePlugin()\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n })\n .ConfigureRpcStore(a =>\n {\n a.RegisterServer<MyServer>();\n })\n .ConfigurePlugins(a =>\n {\n a.UseWebApi();\n a.UseWebSocket();//\u4e0d\u7528\u8bbe\u7f6e\u8fde\u63a5url\n }))\n .Start();\n\nConsole.WriteLine("\u670d\u52a1\u5668\u5df2\u542f\u52a8\uff0c\u53ef\u4f7f\u7528\u4e0b\u5217\u5730\u5740\u8fde\u63a5");\nConsole.WriteLine("ws://127.0.0.1:7789/MyServer/ConnectWS?token=123");\n')),(0,o.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,o.kt)("p",{parentName:"admonition"},"\u4f7f\u7528WebApi\u8fdb\u884cWebsocket\u8fde\u63a5\u9a8c\u8bc1\u65f6\uff0c\u662f\u6700\u7075\u6d3b\u7684\uff0c\u800c\u4e14\u5982\u679c\u53ef\u80fd\uff0cWebsocket\u4e5f\u53ef\u4ee5\u901a\u8fc7Post\u8fde\u63a5\u9a8c\u8bc1\u3002")),(0,o.kt)("h2",{id:"\u4e09\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1"},"\u4e09\u3001\u5ba2\u6237\u7aef\u8bf7\u6c42\u9a8c\u8bc1"),(0,o.kt)("h3",{id:"31-url\u5305\u542b\u8bf7\u6c42\u53c2\u6570"},"3.1 Url\u5305\u542b\u8bf7\u6c42\u53c2\u6570"),(0,o.kt)("p",null,"\u8bf7\u6c42\u9a8c\u8bc1\u65f6\uff0c\u8bf7\u6c42\u7684\u53c2\u6570\u5168\u90e8\u5305\u542b\u5728"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-csharp"},'WebSocketClient myWSClient = new WebSocketClient();\nmyWSClient.Setup(new TouchSocketConfig()\n .SetRemoteIPHost("ws://127.0.0.1:7789/ws?token=1232")\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n }));\nvar result= myWSClient.TryConnect();\n\nmyWSClient.Logger.Info(result.ToString());\n\n')),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/RRQM_Home/TouchSocket/tree/master/examples/WebSocket%E7%AE%80%E5%8D%95%E7%A4%BA%E4%BE%8B/WS%E8%BF%9E%E6%8E%A5%E9%AA%8C%E8%AF%81/WSVerifyConsoleApp"},"Websocket\u8fde\u63a5\u9a8c\u8bc1\u793a\u4f8b")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[3635],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,l=function(e,t){if(null==e)return{};var n,r,l={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,l=e.mdxType,a=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),k=u(n),m=l,g=k["".concat(p,".").concat(m)]||k[m]||s[m]||a;return n?r.createElement(g,o(o({ref:t},c),{},{components:n})):r.createElement(g,o({ref:t},c))}));function m(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,o=new Array(a);o[0]=k;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:l,o[1]=i;for(var u=2;u<a;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}k.displayName="MDXCreateElement"},753:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var r=n(7462),l=(n(7294),n(3905));const a={id:"pluginsmanager",title:"\u63d2\u4ef6\u7cfb\u7edf"},o=void 0,i={unversionedId:"pluginsmanager",id:"pluginsmanager",title:"\u63d2\u4ef6\u7cfb\u7edf",description:"\u8bf4\u660e",source:"@site/docs/pluginsmanager.mdx",sourceDirName:".",slug:"/pluginsmanager",permalink:"/touchsocket/docs/pluginsmanager",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/pluginsmanager.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"pluginsmanager",title:"\u63d2\u4ef6\u7cfb\u7edf"},sidebar:"docs",previous:{title:"\u6587\u4ef6\u6d41\u6c60",permalink:"/touchsocket/docs/filepool"},next:{title:"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f",permalink:"/touchsocket/docs/ipackage"}},p={},u=[{value:"\u8bf4\u660e",id:"\u8bf4\u660e",level:2},{value:"\u4ea7\u54c1\u7279\u70b9",id:"\u4ea7\u54c1\u7279\u70b9",level:2},{value:"\u4ea7\u54c1\u5e94\u7528\u573a\u666f",id:"\u4ea7\u54c1\u5e94\u7528\u573a\u666f",level:2},{value:"\u63d2\u4ef6\u7279\u6027",id:"\u63d2\u4ef6\u7279\u6027",level:2},{value:"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6",id:"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6",level:2},{value:"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6",id:"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6",level:2}],c={toc:u};function s(e){let{components:t,...n}=e;return(0,l.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"\u8bf4\u660e"},"\u8bf4\u660e"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u63d2\u4ef6\u662f\u5bf9TouchSocket\u4ea7\u54c1\u7684\u6a2a\u5411\u6269\u5c55\u3002")),(0,l.kt)("h2",{id:"\u4ea7\u54c1\u7279\u70b9"},"\u4ea7\u54c1\u7279\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u7b80\u5355\u6613\u7528\u3002"),(0,l.kt)("li",{parentName:"ul"},"\u6613\u6269\u5c55\u3002")),(0,l.kt)("h2",{id:"\u4ea7\u54c1\u5e94\u7528\u573a\u666f"},"\u4ea7\u54c1\u5e94\u7528\u573a\u666f"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"TCP\u57fa\u7840\u4f7f\u7528\u573a\u666f\u3002"),(0,l.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49\u534f\u8bae\u89e3\u6790\u573a\u666f\u3002")),(0,l.kt)("h2",{id:"\u63d2\u4ef6\u7279\u6027"},"\u63d2\u4ef6\u7279\u6027"),(0,l.kt)("p",null,"\u3010\u591a\u7ebf\u7a0b\u5e76\u53d1\u3011\n\u63d2\u4ef6\u7684\u6240\u6709\u89e6\u53d1\uff0c\u5747\u662f\u540c\u4e00\u5b9e\u4f8b\uff0c\u6240\u4ee5\u5728\u670d\u52a1\u5668\u8fd0\u884c\u65f6\uff0c\u51e0\u4e4e\u90fd\u662f\u5e76\u53d1\u89e6\u53d1\u7684\uff0c\u6240\u6709\u5e94\u5f53\u8003\u8651\u5e76\u53d1\u95ee\u9898\u3002"),(0,l.kt)("p",null,"\u3010\u63d2\u4ef6\u5148\u884c\u3011\n\u5f53\u542f\u7528\u63d2\u4ef6\u65f6\uff0c\u63d2\u4ef6\u7684\u89e6\u53d1",(0,l.kt)("strong",{parentName:"p"},"\u4ec5\u6b21\u4e8e"),"\u65b9\u6cd5\u91cd\u5199\uff0c\u800c",(0,l.kt)("strong",{parentName:"p"},"\u4f18\u4e8e"),"\u4e8b\u4ef6\u3002"),(0,l.kt)("p",null,"\u3010\u6267\u884c\u987a\u5e8f\u3011\n\u6bcf\u4e2a\u63d2\u4ef6\u90fd\u6709\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"Order"),"\u5c5e\u6027\uff0c\u8be5\u5c5e\u6027\u8868\u793a\u8be5\u63d2\u4ef6\u7684\u6267\u884c\u987a\u5e8f\uff0c\u6570\u503c\u5c0f\uff0c\u8d8a\u63d0\u524d\u6267\u884c\uff08Order\u5728Add\u4e4b\u524d\u751f\u6548\uff0c\u540e\u7eed\u4fee\u6539\u65e0\u6548\uff09\u3002"),(0,l.kt)("p",null,"\u3010\u4e2d\u65ad\u4f20\u9012\u3011\n\u5f53\u67d0\u4e2a\u63d2\u4ef6\u5728\u54cd\u5e94\u65f6\uff0c\u5982\u679c\u8bbe\u7f6ee.Handled=true,\u5219\u8be5\u6570\u636e\u5c06",(0,l.kt)("strong",{parentName:"p"},"\u4e0d\u4f1a"),"\u518d\u89e6\u53d1\u540e\u7eed\u7684\u63d2\u4ef6\u3001\u4e8b\u4ef6\u3001\u91cd\u5199\u65b9\u6cd5\u3002"),(0,l.kt)("h2",{id:"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6"},"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6"),(0,l.kt)("p",null,"\u7528\u6237\u901a\u8fc7\u5b9e\u73b0\u6846\u67b6\u9884\u8bbe\u7684\u63d2\u4ef6\u63a5\u53e3\uff0c\u5373\u53ef\u63a5\u6536\u76f8\u5e94\u7684\u89e6\u53d1\u3002\u6bcf\u4e2a\u7ec4\u4ef6\u90fd\u6709\u8be6\u7ec6\u7684\u63d2\u4ef6\u652f\u6301\u8bf4\u660e\u3002"),(0,l.kt)("p",null,"\u4f8b\u5982\uff1a",(0,l.kt)("strong",{parentName:"p"},"ITcpPlugin"),"\u3001",(0,l.kt)("strong",{parentName:"p"},"ITokenPlugin"),"\u3001",(0,l.kt)("strong",{parentName:"p"},"IProtocolPlugin"),"\u7b49\u3002"),(0,l.kt)("h2",{id:"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6"},"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6"),(0,l.kt)("p",null,"\u5f53\u5404\u4f4d\u670b\u53cb\u4f7f\u7528TouchSocket\u5c01\u88c5\u81ea\u5df1\u7684dll\u65f6\uff0c\u53ef\u80fd\u9700\u8981\u4e00\u4e9b\u5b9a\u4e49\u63d2\u4ef6\u3002\u90a3\u4e48\u8fd9\u4e2a\u9700\u6c42TouchSocket\u4e5f\u80fd\u6ee1\u8db3\u5927\u5bb6\u3002"),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"\u4f8b\u5982\uff1a\u5b9e\u73b0\u57fa\u4e8eTCP\u7684\u7279\u6b8a\u4fe1\u606f\u81ea\u5b9a\u4e49\u63d2\u4ef6\uff0c\u5f53\u6536\u5230\u5b57\u6bcd\u2018A\u2019\u65f6\uff0c\u5e0c\u671b\u89e6\u53d1\u5b9e\u73b0IAPlugin\u63a5\u53e3\u63d2\u4ef6\u7684GoToA\u65b9\u6cd5\u3002")),(0,l.kt)("p",null,"\u5177\u4f53\u64cd\u4f5c\u5982\u4e0b\uff1a"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u58f0\u660eIAPlugin\u63a5\u53e3\uff0c\u7ee7\u627f",(0,l.kt)("strong",{parentName:"li"},"IPlugin"),"\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u58f0\u660eGoToA\u63a5\u53e3\u65b9\u6cd5\uff08\u8be5\u65b9\u6cd5\u5fc5\u987b",(0,l.kt)("strong",{parentName:"li"},"\u4e24\u4e2a"),"\u53c2\u6570\uff0c\u7b2c\u4e00\u53c2\u6570\u65e0\u8981\u6c42\uff0c\u4e00\u822c\u4e3a\u89e6\u53d1\u4e3b\u4f53\uff0c\u7b2c\u4e8c\u53c2\u6570",(0,l.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u7ee7\u627f"),"\u81ea",(0,l.kt)("strong",{parentName:"li"},"TouchSocketEventArgs"),"\uff09\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u5728\u5408\u9002\u65f6\u5019\uff0c\u5224\u65ad\u5f53\u524d\u914d\u7f6e\u662f\u5426\u652f\u6301\u63d2\u4ef6\uff0c\u7136\u540e\u4f7f\u7528\u670d\u52a1\u5668\u6216\u5ba2\u6237\u7aef\u7684",(0,l.kt)("strong",{parentName:"li"},"PluginsManager"),"\u5c5e\u6027\u8c03\u7528",(0,l.kt)("strong",{parentName:"li"},"Raise"),"\u65b9\u6cd5\uff0c\u6b64\u5904\u7684\u6cdb\u578b\uff08",(0,l.kt)("strong",{parentName:"li"},"IAPlugin"),"\uff09\u5fc5\u987b\u4e3a\u63a5\u53e3\u7c7b\u578b\u3002")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-csharp"},"public interface IAPlugin : IPlugin\n{\n void GoToA(ITcpClientBase client,TouchSocketEventArgs e);\n}\n")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-csharp"},'public class MyTClient : TcpClient\n{\n protected override void HandleReceivedData(ByteBlock byteBlock, IRequestInfo requestInfo)\n {\n if (this.UsePlugin)\n {\n if (byteBlock.ToString()=="A")\n {\n this.PluginsManager.Raise<IAPlugin>("GoToA",this,new TouchSocketEventArgs());\n }\n }\n }\n}\n')))}s.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[3635],{3905:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>m});var r=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?a(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,r,l=function(e,t){if(null==e)return{};var n,r,l={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,l=e.mdxType,a=e.originalType,p=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),k=u(n),m=l,g=k["".concat(p,".").concat(m)]||k[m]||s[m]||a;return n?r.createElement(g,o(o({ref:t},c),{},{components:n})):r.createElement(g,o({ref:t},c))}));function m(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var a=n.length,o=new Array(a);o[0]=k;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:l,o[1]=i;for(var u=2;u<a;u++)o[u]=n[u];return r.createElement.apply(null,o)}return r.createElement.apply(null,n)}k.displayName="MDXCreateElement"},753:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>o,default:()=>s,frontMatter:()=>a,metadata:()=>i,toc:()=>u});var r=n(7462),l=(n(7294),n(3905));const a={id:"pluginsmanager",title:"\u63d2\u4ef6\u7cfb\u7edf"},o=void 0,i={unversionedId:"pluginsmanager",id:"pluginsmanager",title:"\u63d2\u4ef6\u7cfb\u7edf",description:"\u8bf4\u660e",source:"@site/docs/pluginsmanager.mdx",sourceDirName:".",slug:"/pluginsmanager",permalink:"/touchsocket/docs/pluginsmanager",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/pluginsmanager.mdx",tags:[],version:"current",lastUpdatedBy:"lzexe",lastUpdatedAt:1677204551,formattedLastUpdatedAt:"Feb 24, 2023",frontMatter:{id:"pluginsmanager",title:"\u63d2\u4ef6\u7cfb\u7edf"},sidebar:"docs",previous:{title:"\u6587\u4ef6\u6d41\u6c60",permalink:"/touchsocket/docs/filepool"},next:{title:"\u5305\u5e8f\u5217\u5316\u6a21\u5f0f",permalink:"/touchsocket/docs/ipackage"}},p={},u=[{value:"\u8bf4\u660e",id:"\u8bf4\u660e",level:2},{value:"\u4ea7\u54c1\u7279\u70b9",id:"\u4ea7\u54c1\u7279\u70b9",level:2},{value:"\u4ea7\u54c1\u5e94\u7528\u573a\u666f",id:"\u4ea7\u54c1\u5e94\u7528\u573a\u666f",level:2},{value:"\u63d2\u4ef6\u7279\u6027",id:"\u63d2\u4ef6\u7279\u6027",level:2},{value:"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6",id:"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6",level:2},{value:"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6",id:"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6",level:2}],c={toc:u};function s(e){let{components:t,...n}=e;return(0,l.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"\u8bf4\u660e"},"\u8bf4\u660e"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u63d2\u4ef6\u662f\u5bf9TouchSocket\u4ea7\u54c1\u7684\u6a2a\u5411\u6269\u5c55\u3002")),(0,l.kt)("h2",{id:"\u4ea7\u54c1\u7279\u70b9"},"\u4ea7\u54c1\u7279\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u7b80\u5355\u6613\u7528\u3002"),(0,l.kt)("li",{parentName:"ul"},"\u6613\u6269\u5c55\u3002")),(0,l.kt)("h2",{id:"\u4ea7\u54c1\u5e94\u7528\u573a\u666f"},"\u4ea7\u54c1\u5e94\u7528\u573a\u666f"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"TCP\u57fa\u7840\u4f7f\u7528\u573a\u666f\u3002"),(0,l.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49\u534f\u8bae\u89e3\u6790\u573a\u666f\u3002")),(0,l.kt)("h2",{id:"\u63d2\u4ef6\u7279\u6027"},"\u63d2\u4ef6\u7279\u6027"),(0,l.kt)("p",null,"\u3010\u591a\u7ebf\u7a0b\u5e76\u53d1\u3011\n\u63d2\u4ef6\u7684\u6240\u6709\u89e6\u53d1\uff0c\u5747\u662f\u540c\u4e00\u5b9e\u4f8b\uff0c\u6240\u4ee5\u5728\u670d\u52a1\u5668\u8fd0\u884c\u65f6\uff0c\u51e0\u4e4e\u90fd\u662f\u5e76\u53d1\u89e6\u53d1\u7684\uff0c\u6240\u4ee5\u5e94\u5f53\u8003\u8651\u5e76\u53d1\u95ee\u9898\u3002"),(0,l.kt)("p",null,"\u3010\u63d2\u4ef6\u5148\u884c\u3011\n\u5f53\u542f\u7528\u63d2\u4ef6\u65f6\uff0c\u63d2\u4ef6\u7684\u89e6\u53d1",(0,l.kt)("strong",{parentName:"p"},"\u4ec5\u6b21\u4e8e"),"\u65b9\u6cd5\u91cd\u5199\uff0c\u800c",(0,l.kt)("strong",{parentName:"p"},"\u4f18\u4e8e"),"\u4e8b\u4ef6\u3002"),(0,l.kt)("p",null,"\u3010\u6267\u884c\u987a\u5e8f\u3011\n\u6bcf\u4e2a\u63d2\u4ef6\u90fd\u6709\u4e00\u4e2a",(0,l.kt)("strong",{parentName:"p"},"Order"),"\u5c5e\u6027\uff0c\u8be5\u5c5e\u6027\u8868\u793a\u8be5\u63d2\u4ef6\u7684\u6267\u884c\u987a\u5e8f\uff0c\u6570\u503c\u5c0f\uff0c\u8d8a\u63d0\u524d\u6267\u884c\uff08Order\u5728Add\u4e4b\u524d\u751f\u6548\uff0c\u540e\u7eed\u4fee\u6539\u65e0\u6548\uff09\u3002"),(0,l.kt)("p",null,"\u3010\u4e2d\u65ad\u4f20\u9012\u3011\n\u5f53\u67d0\u4e2a\u63d2\u4ef6\u5728\u54cd\u5e94\u65f6\uff0c\u5982\u679c\u8bbe\u7f6ee.Handled=true,\u5219\u8be5\u6570\u636e\u5c06",(0,l.kt)("strong",{parentName:"p"},"\u4e0d\u4f1a"),"\u518d\u89e6\u53d1\u540e\u7eed\u7684\u63d2\u4ef6\u3001\u4e8b\u4ef6\u3001\u91cd\u5199\u65b9\u6cd5\u3002"),(0,l.kt)("h2",{id:"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6"},"\u7528\u6237\u81ea\u5b9a\u4e49\u63d2\u4ef6"),(0,l.kt)("p",null,"\u7528\u6237\u901a\u8fc7\u5b9e\u73b0\u6846\u67b6\u9884\u8bbe\u7684\u63d2\u4ef6\u63a5\u53e3\uff0c\u5373\u53ef\u63a5\u6536\u76f8\u5e94\u7684\u89e6\u53d1\u3002\u6bcf\u4e2a\u7ec4\u4ef6\u90fd\u6709\u8be6\u7ec6\u7684\u63d2\u4ef6\u652f\u6301\u8bf4\u660e\u3002"),(0,l.kt)("p",null,"\u4f8b\u5982\uff1a",(0,l.kt)("strong",{parentName:"p"},"ITcpPlugin"),"\u3001",(0,l.kt)("strong",{parentName:"p"},"ITokenPlugin"),"\u3001",(0,l.kt)("strong",{parentName:"p"},"IProtocolPlugin"),"\u7b49\u3002"),(0,l.kt)("h2",{id:"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6"},"\u7cfb\u7edf\u81ea\u5b9a\u4e49\u63d2\u4ef6"),(0,l.kt)("p",null,"\u5f53\u5404\u4f4d\u670b\u53cb\u4f7f\u7528TouchSocket\u5c01\u88c5\u81ea\u5df1\u7684dll\u65f6\uff0c\u53ef\u80fd\u9700\u8981\u4e00\u4e9b\u5b9a\u4e49\u63d2\u4ef6\u3002\u90a3\u4e48\u8fd9\u4e2a\u9700\u6c42TouchSocket\u4e5f\u80fd\u6ee1\u8db3\u5927\u5bb6\u3002"),(0,l.kt)("blockquote",null,(0,l.kt)("p",{parentName:"blockquote"},"\u4f8b\u5982\uff1a\u5b9e\u73b0\u57fa\u4e8eTCP\u7684\u7279\u6b8a\u4fe1\u606f\u81ea\u5b9a\u4e49\u63d2\u4ef6\uff0c\u5f53\u6536\u5230\u5b57\u6bcd\u2018A\u2019\u65f6\uff0c\u5e0c\u671b\u89e6\u53d1\u5b9e\u73b0IAPlugin\u63a5\u53e3\u63d2\u4ef6\u7684GoToA\u65b9\u6cd5\u3002")),(0,l.kt)("p",null,"\u5177\u4f53\u64cd\u4f5c\u5982\u4e0b\uff1a"),(0,l.kt)("ol",null,(0,l.kt)("li",{parentName:"ol"},"\u58f0\u660eIAPlugin\u63a5\u53e3\uff0c\u7ee7\u627f",(0,l.kt)("strong",{parentName:"li"},"IPlugin"),"\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u58f0\u660eGoToA\u63a5\u53e3\u65b9\u6cd5\uff08\u8be5\u65b9\u6cd5\u5fc5\u987b",(0,l.kt)("strong",{parentName:"li"},"\u4e24\u4e2a"),"\u53c2\u6570\uff0c\u7b2c\u4e00\u53c2\u6570\u65e0\u8981\u6c42\uff0c\u4e00\u822c\u4e3a\u89e6\u53d1\u4e3b\u4f53\uff0c\u7b2c\u4e8c\u53c2\u6570",(0,l.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u7ee7\u627f"),"\u81ea",(0,l.kt)("strong",{parentName:"li"},"TouchSocketEventArgs"),"\uff09\u3002"),(0,l.kt)("li",{parentName:"ol"},"\u5728\u5408\u9002\u65f6\u5019\uff0c\u5224\u65ad\u5f53\u524d\u914d\u7f6e\u662f\u5426\u652f\u6301\u63d2\u4ef6\uff0c\u7136\u540e\u4f7f\u7528\u670d\u52a1\u5668\u6216\u5ba2\u6237\u7aef\u7684",(0,l.kt)("strong",{parentName:"li"},"PluginsManager"),"\u5c5e\u6027\u8c03\u7528",(0,l.kt)("strong",{parentName:"li"},"Raise"),"\u65b9\u6cd5\uff0c\u6b64\u5904\u7684\u6cdb\u578b\uff08",(0,l.kt)("strong",{parentName:"li"},"IAPlugin"),"\uff09\u5fc5\u987b\u4e3a\u63a5\u53e3\u7c7b\u578b\u3002")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-csharp"},"public interface IAPlugin : IPlugin\n{\n void GoToA(ITcpClientBase client,TouchSocketEventArgs e);\n}\n")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-csharp"},'public class MyTClient : TcpClient\n{\n protected override void HandleReceivedData(ByteBlock byteBlock, IRequestInfo requestInfo)\n {\n if (this.UsePlugin)\n {\n if (byteBlock.ToString()=="A")\n {\n this.PluginsManager.Raise<IAPlugin>("GoToA",this,new TouchSocketEventArgs());\n }\n }\n }\n}\n')))}s.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[9764],{3905:(e,t,n)=>{n.d(t,{Zo:()=>p,kt:()=>m});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),s=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),d=s(n),m=a,g=d["".concat(l,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(g,i(i({ref:t},p),{},{components:n})):r.createElement(g,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var s=2;s<o;s++)i[s]=n[s];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},5348:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>s});var r=n(7462),a=(n(7294),n(3905));const o={id:"websocketheartbeat",title:"Websocket\u5fc3\u8df3\u8bbe\u7f6e"},i=void 0,c={unversionedId:"websocketheartbeat",id:"websocketheartbeat",title:"Websocket\u5fc3\u8df3\u8bbe\u7f6e",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/websocketheartbeat.mdx",sourceDirName:".",slug:"/websocketheartbeat",permalink:"/touchsocket/docs/websocketheartbeat",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/websocketheartbeat.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1677212581,formattedLastUpdatedAt:"Feb 24, 2023",frontMatter:{id:"websocketheartbeat",title:"Websocket\u5fc3\u8df3\u8bbe\u7f6e"},sidebar:"docs",previous:{title:"\u8fde\u63a5\u9a8c\u8bc1",permalink:"/touchsocket/docs/websocketverify"},next:{title:"WSCommandLinePlugin",permalink:"/touchsocket/docs/wscommandlineplugin"}},l={},s=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u5fc3\u8df3\u914d\u7f6e",id:"\u4e8c\u5fc3\u8df3\u914d\u7f6e",level:2},{value:"2.1 \u670d\u52a1\u5668\u914d\u7f6e",id:"21-\u670d\u52a1\u5668\u914d\u7f6e",level:4},{value:"2.2 \u5ba2\u6237\u7aef\u4f7f\u7528\u5fc3\u8df3\u63d2\u4ef6",id:"22-\u5ba2\u6237\u7aef\u4f7f\u7528\u5fc3\u8df3\u63d2\u4ef6",level:4},{value:"\u4e09\u3001\u76f4\u63a5\u53d1\u9001\u5fc3\u8df3",id:"\u4e09\u76f4\u63a5\u53d1\u9001\u5fc3\u8df3",level:2}],p={toc:s};function u(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"Websocket\u62e5\u6709\u81ea\u5df1\u7684\u5fc3\u8df3\u6570\u636e\u683c\u5f0f\uff0c\u548c\u54cd\u5e94\u5fc3\u8df3\u683c\u5f0f\uff0c\u4e13\u4e1a\u540d\u8bcd\u662fPing\u548cPong\u3002\u6240\u4ee5\u4f9d\u9760\u8fd9\u4e24\u4e2a\uff0c\u53ef\u4ee5\u76f4\u63a5\u5b9e\u73b0\u5fc3\u8df3\u3002"),(0,a.kt)("h2",{id:"\u4e8c\u5fc3\u8df3\u914d\u7f6e"},"\u4e8c\u3001\u5fc3\u8df3\u914d\u7f6e"),(0,a.kt)("h4",{id:"21-\u670d\u52a1\u5668\u914d\u7f6e"},"2.1 \u670d\u52a1\u5668\u914d\u7f6e"),(0,a.kt)("p",null,"\u670d\u52a1\u5668\u5728\u6dfb\u52a0WebSocket\u529f\u80fd\u65f6\uff0c\u53ef\u4ee5\u76f4\u63a5\u542f\u7528\u81ea\u52a8\u56de\u5e94Ping\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{17}","{17}":!0},'var service = new HttpService();\nservice.Setup(new TouchSocketConfig()//\u52a0\u8f7d\u914d\u7f6e\n .UsePlugin()\n .SetListenIPHosts(new IPHost[] { new IPHost(7789) })\n .ConfigureContainer(a =>\n {\n a.AddConsoleLogger();\n })\n .ConfigureRpcStore(a =>\n {\n a.RegisterServer<MyServer>();\n })\n .ConfigurePlugins(a =>\n {\n a.UseWebSocket()//\u6dfb\u52a0WebSocket\u529f\u80fd\n .SetWSUrl("/ws")\n .UseAutoPong()//\u5f53\u6536\u5230ping\u62a5\u6587\u65f6\u81ea\u52a8\u56de\u5e94pong\n .SetCallback(WSCallback);//WSCallback\u56de\u8c03\u51fd\u6570\u662f\u5728WS\u6536\u5230\u6570\u636e\u65f6\u89e6\u53d1\u56de\u8c03\u7684\u3002\n a.Add<MyWebSocketPlugin>();//MyWebSocketPlugin\u662f\u7ee7\u627f\u81eaWebSocketPluginBase\u7684\u63d2\u4ef6\u3002\n a.Add<MyWSCommandLinePlugin>();\n a.UseWebApi();\n }))\n .Start();\n')),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},(0,a.kt)("strong",{parentName:"p"},"UseAutoPong"),"\u975e\u5fc5\u987b\u64cd\u4f5c\uff0c\u5982\u679c\u4e0d\u8bbe\u7f6e\u7684\u8bdd\uff0c\u81ea\u5df1\u5728\u63d2\u4ef6\u5904\u7406Ping\u62a5\u6587\u4e5f\u53ef\u4ee5\u3002")),(0,a.kt)("h4",{id:"22-\u5ba2\u6237\u7aef\u4f7f\u7528\u5fc3\u8df3\u63d2\u4ef6"},"2.2 \u5ba2\u6237\u7aef\u4f7f\u7528\u5fc3\u8df3\u63d2\u4ef6"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{11-12}","{11-12}":!0},'WebSocketClient client = new WebSocketClient();\nclient.Setup(new TouchSocketConfig()\n .SetRemoteIPHost("127.0.0.1:7789")\n .UsePlugin()\n .ConfigureContainer(a =>\n {\n a.AddFileLogger();\n })\n .ConfigurePlugins(a => \n {\n a.UseWebSocketHeartbeat()//\u4f7f\u7528\u5fc3\u8df3\u63d2\u4ef6\n .Tick(TimeSpan.FromSeconds(5));//\u6bcf5\u79d2ping\u4e00\u6b21\u3002\n }));\nclient.Connect();\n')),(0,a.kt)("h2",{id:"\u4e09\u76f4\u63a5\u53d1\u9001\u5fc3\u8df3"},"\u4e09\u3001\u76f4\u63a5\u53d1\u9001\u5fc3\u8df3"),(0,a.kt)("p",null,"\u76f4\u63a5\u53d1\u9001\u5fc3\u8df3\uff0c\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u6269\u5c55\u65b9\u6cd5\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},"client.PingWS();\nclient.PongWS();\n")),(0,a.kt)("p",null,"\u6216\u8005\u81ea\u5df1\u6784\u5efa\u6570\u636e\u5e27"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp"},"WSDataFrame dataFrame = new WSDataFrame()\n{\n FIN = true,\n Opcode = WSDataType.Ping\n};\n\n//WSDataFrame dataFrame = new WSDataFrame()\n//{\n// FIN = true,\n// Opcode = WSDataType.Pong\n//};\n\nclient.Send(dataFrame);\n")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u81ea\u5df1\u6784\u5efa\u6570\u636e\u5e27\uff0c\u8fd8\u5e94\u8be5\u8bbe\u7f6eMake\u7b49\u5176\u4ed6\u53c2\u6570\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u65e0\u8bba\u662fPing\uff0c\u8fd8\u662fPong\uff0c\u670d\u52a1\u5668\u548c\u5ba2\u6237\u7aef\u90fd\u652f\u6301\u53d1\u9001\u548c\u63a5\u6536\u3002\u4f46\u662f\u4e00\u822c\u5efa\u8bae\u7531\u5ba2\u6237\u7aefPing\uff0c\u670d\u52a1\u5668\u53ea\u8d1f\u8d23Pong\u5373\u53ef\u3002")))}u.isMDXComponent=!0}}]);
\ No newline at end of file
此差异已折叠。
此差异已折叠。
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[487],{3905:(e,t,r)=>{r.d(t,{Zo:()=>s,kt:()=>f});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function c(e,t){if(null==e)return{};var r,n,a=function(e,t){if(null==e)return{};var r,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),p=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=p(r),f=a,m=u["".concat(l,".").concat(f)]||u[f]||d[f]||o;return r?n.createElement(m,i(i({ref:t},s),{},{components:r})):n.createElement(m,i({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,i=new Array(o);i[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var p=2;p<o;p++)i[p]=r[p];return n.createElement.apply(null,i)}return n.createElement.apply(null,r)}u.displayName="MDXCreateElement"},6923:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>d,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var n=r(7462),a=(r(7294),r(3905));const o={id:"fixedsizepackageadapter",title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},i=void 0,c={unversionedId:"fixedsizepackageadapter",id:"fixedsizepackageadapter",title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/fixedsizepackageadapter.mdx",sourceDirName:".",slug:"/fixedsizepackageadapter",permalink:"/touchsocket/docs/fixedsizepackageadapter",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/fixedsizepackageadapter.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"fixedsizepackageadapter",title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},sidebar:"docs",previous:{title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/fixedheaderpackageadapter"},next:{title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/terminatorpackageadapter"}},l={},p=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u4f7f\u7528",id:"\u4e09\u4f7f\u7528",level:2}],s={toc:p};function d(e){let{components:t,...r}=e;return(0,a.kt)("wrapper",(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668\u662f\u5c06\u53d1\u9001\u7684\u6570\u636e\u901a\u8fc7\u5206\u5272\u3001\u586b\u8865\u7684\u64cd\u4f5c\uff0c\u4ee5\u8fbe\u5230\u6bcf\u6b21\u53d1\u9001\u3001\u63a5\u6536\u7684\u6570\u636e\u90fd\u662f\u56fa\u5b9a\u7684\u957f\u5ea6\u6765\u5904\u7406\u7c98\u5305\u3001\u5206\u5305\u95ee\u9898\u3002\u8fd9\u79cd\u65b9\u6848\u4e00\u822c\u9002\u7528\u4e8e\u673a\u68b0\u81c2\uff0c\u673a\u5668\u4eba\u63a7\u5236\u7b49\u573a\u666f\u3002 ",(0,a.kt)("a",{name:"AF60y"})),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u65e0\u8bba\u4f55\u65f6\uff0c\u53d1\u9001\u4e0e\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u6c38\u8fdc\u4e3a\u8bbe\u5b9a\u503c\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u7b97\u6cd5\u7b80\u5355\uff0c\u53ef\u4ee5\u6bd4\u8f83\u8f7b\u677e\u7684\u5b9e\u73b0\u8de8\u8bed\u8a00\u3001\u8de8\u6846\u67b6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u4e00\u822c\u9002\u7528\u4e8e\u4e1a\u52a1\u6570\u636e\u56fa\u5b9a\u573a\u666f\uff0c")),(0,a.kt)("h2",{id:"\u4e09\u4f7f\u7528"},"\u4e09\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002\u4e0b\u5217\u4ee5\u670d\u52a1\u5668\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,"\u6b65\u9aa4"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"TouchSocketConfig\u914d\u7f6e\u4e2d\u8bbe\u7f6e\uff0c\u540c\u65f6\u6307\u5b9a\u6570\u636e\u7684\u957f\u5ea6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u901a\u8fc7Received\uff08\u4e8b\u4ef6\u3001\u65b9\u6cd5\u3001\u63d2\u4ef6\uff09\u4e2d\u7684ByteBlock\u8bfb\u53d6\u6570\u636e\uff08\u6ce8\u610f\uff1a\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff09\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{10}","{10}":!0},"TcpService service = new TcpService();\nservice.Received += (client, byteBlock, requestInfo) =>\n{\n //\u4ece\u5ba2\u6237\u7aef\u6536\u5230\u4fe1\u606f\n string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost(7790) })\n .SetDataHandlingAdapter(()=> { return new FixedSizePackageAdapter(10); }))//\u914d\u7f6e\u9002\u914d\u5668\uff0c\u56fa\u5b9a\u6570\u636e\u957f\u5ea6\u4e3a10\u5b57\u8282\u3002\n .Start();//\u542f\u52a8\n")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff0c\u800c\u4e0d\u662fbyteBlock.Buffer.Length\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002")))}d.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[487],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>f});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?o(Object(n),!0).forEach((function(t){a(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function c(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=p(n),f=a,m=u["".concat(l,".").concat(f)]||u[f]||s[f]||o;return n?r.createElement(m,i(i({ref:t},d),{},{components:n})):r.createElement(m,i({ref:t},d))}));function f(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=u;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var p=2;p<o;p++)i[p]=n[p];return r.createElement.apply(null,i)}return r.createElement.apply(null,n)}u.displayName="MDXCreateElement"},6923:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>s,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),a=(n(7294),n(3905));const o={id:"fixedsizepackageadapter",title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},i=void 0,c={unversionedId:"fixedsizepackageadapter",id:"fixedsizepackageadapter",title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/fixedsizepackageadapter.mdx",sourceDirName:".",slug:"/fixedsizepackageadapter",permalink:"/touchsocket/docs/fixedsizepackageadapter",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/fixedsizepackageadapter.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1677212581,formattedLastUpdatedAt:"Feb 24, 2023",frontMatter:{id:"fixedsizepackageadapter",title:"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668"},sidebar:"docs",previous:{title:"\u56fa\u5b9a\u5305\u5934\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/fixedheaderpackageadapter"},next:{title:"\u7ec8\u6b62\u56e0\u5b50\u5206\u5272\u6570\u636e\u5904\u7406\u9002\u914d\u5668",permalink:"/touchsocket/docs/terminatorpackageadapter"}},l={},p=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u7279\u70b9",id:"\u4e8c\u7279\u70b9",level:2},{value:"\u4e09\u3001\u4f7f\u7528",id:"\u4e09\u4f7f\u7528",level:2}],d={toc:p};function s(e){let{components:t,...n}=e;return(0,a.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,a.kt)("p",null,"\u56fa\u5b9a\u957f\u5ea6\u6570\u636e\u5904\u7406\u9002\u914d\u5668\u662f\u5c06\u53d1\u9001\u7684\u6570\u636e\u901a\u8fc7\u5206\u5272\u3001\u586b\u8865\u7684\u64cd\u4f5c\uff0c\u4ee5\u8fbe\u5230\u6bcf\u6b21\u53d1\u9001\u3001\u63a5\u6536\u7684\u6570\u636e\u90fd\u662f\u56fa\u5b9a\u7684\u957f\u5ea6\u6765\u5904\u7406\u7c98\u5305\u3001\u5206\u5305\u95ee\u9898\u3002\u8fd9\u79cd\u65b9\u6848\u4e00\u822c\u9002\u7528\u4e8e\u673a\u68b0\u81c2\uff0c\u673a\u5668\u4eba\u63a7\u5236\u7b49\u573a\u666f\u3002 ",(0,a.kt)("a",{name:"AF60y"})),(0,a.kt)("h2",{id:"\u4e8c\u7279\u70b9"},"\u4e8c\u3001\u7279\u70b9"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"\u65e0\u8bba\u4f55\u65f6\uff0c\u53d1\u9001\u4e0e\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u6c38\u8fdc\u4e3a\u8bbe\u5b9a\u503c\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u7b97\u6cd5\u7b80\u5355\uff0c\u53ef\u4ee5\u6bd4\u8f83\u8f7b\u677e\u7684\u5b9e\u73b0\u8de8\u8bed\u8a00\u3001\u8de8\u6846\u67b6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u4e00\u822c\u9002\u7528\u4e8e\u4e1a\u52a1\u6570\u636e\u56fa\u5b9a\u573a\u666f\uff0c")),(0,a.kt)("h2",{id:"\u4e09\u4f7f\u7528"},"\u4e09\u3001\u4f7f\u7528"),(0,a.kt)("p",null,"\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002\u4e0b\u5217\u4ee5\u670d\u52a1\u5668\u4e3a\u4f8b\u3002"),(0,a.kt)("p",null,"\u6b65\u9aa4"),(0,a.kt)("ol",null,(0,a.kt)("li",{parentName:"ol"},"TouchSocketConfig\u914d\u7f6e\u4e2d\u8bbe\u7f6e\uff0c\u540c\u65f6\u6307\u5b9a\u6570\u636e\u7684\u957f\u5ea6\u3002"),(0,a.kt)("li",{parentName:"ol"},"\u901a\u8fc7Received\uff08\u4e8b\u4ef6\u3001\u65b9\u6cd5\u3001\u63d2\u4ef6\uff09\u4e2d\u7684ByteBlock\u8bfb\u53d6\u6570\u636e\uff08\u6ce8\u610f\uff1a\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff09\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-csharp",metastring:"{10}","{10}":!0},"TcpService service = new TcpService();\nservice.Received += (client, byteBlock, requestInfo) =>\n{\n //\u4ece\u5ba2\u6237\u7aef\u6536\u5230\u4fe1\u606f\n string mes = Encoding.UTF8.GetString(byteBlock.Buffer, 0, byteBlock.Len);\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost(7790) })\n .SetDataHandlingAdapter(()=> { return new FixedSizePackageAdapter(10); }))//\u914d\u7f6e\u9002\u914d\u5668\uff0c\u56fa\u5b9a\u6570\u636e\u957f\u5ea6\u4e3a10\u5b57\u8282\u3002\n .Start();//\u542f\u52a8\n")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5728\u53d1\u9001\uff08Send\u3001SendAsync\uff09\u6570\u636e\u65f6\uff0c\u4f1a\u81ea\u52a8\u5c01\u88c5\u6570\u636e\u5934\uff0c\u6240\u4ee5\u4e0d\u9700\u8981\u624b\u52a8\u5c01\u88c5\u3002\u5982\u679c\u60f3\u8981\u53d1\u9001\u624b\u52a8\u7ec4\u88c5\u7684\u6570\u636e\uff0c\u8bf7\u4f7f\u7528DefaultSend\u3002")),(0,a.kt)("admonition",{title:"\u6ce8\u610f",type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"\u63a5\u6536\u7684\u6570\u636e\u957f\u5ea6\u662fbyteBlock.Len\uff0c\u800c\u4e0d\u662fbyteBlock.Buffer.Length\u3002")),(0,a.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,a.kt)("p",{parentName:"admonition"},"\u8be5\u9002\u914d\u5668\uff0c\u5ba2\u6237\u7aef\u4e0e\u670d\u52a1\u5668\u5747\u9002\u7528\u3002")))}s.isMDXComponent=!0}}]);
\ No newline at end of file
此差异已折叠。
此差异已折叠。
(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",138:"fce76f89",230:"329302c4",487:"ba9c7ecd",505:"28d8f037",631:"223951e7",803:"430053de",904:"d5d2094c",908:"8154dd80",1161:"5da97758",1168:"4e9c6747",1285:"1c9cad99",1302:"88be757d",1317:"11fc8f46",1569:"eafaca75",1586:"04ff01fb",1592:"a82e3754",1601:"b806365f",1687:"389c2360",1705:"d6be6cb7",1793:"da3959dc",1822:"f05a39b7",1868:"41b30073",1877:"8aa4b8ad",1895:"9e2cc891",1965:"17443a98",1969:"763782ab",1971:"b0d79caf",2022:"915634cf",2264:"0b10c115",2289:"3030335d",2373:"7c171c7d",2375:"578e6f54",2416:"9a8bd036",2645:"2740fa0a",2671:"11f9f480",2894:"41627674",2903:"0fc86718",2934:"e782541c",2996:"0afce4d0",3214:"8c4cc064",3285:"b1f68223",3371:"d22033f9",3420:"babdfbe3",3503:"b7e03a75",3635:"8973b48c",4018:"078d73b8",4123:"404aa199",4195:"c4f5d8e4",4456:"7a6724ae",4649:"e5d5df95",4724:"b4d3dab5",4747:"74ad01de",4822:"9a9e2780",4850:"91a311b4",4929:"47f1b9ba",5215:"4ecf139e",5264:"9bfb9f12",5683:"355b4941",5873:"3ab343cc",5983:"2c06b999",6050:"d6520aa6",6128:"b992e8b3",6171:"7b93349f",6191:"a81d4448",6373:"320af078",6390:"cbd4f89d",6487:"aa4c723b",6505:"965c04d6",6746:"e7e0ef60",7016:"dfe172e5",7162:"0a7a9b32",7278:"94601e7d",7436:"c8245f17",7453:"94e3a799",7462:"1ec5dc39",7586:"bc87ecb9",7790:"ce02ea51",7918:"17896441",7920:"1a4e3797",7986:"bcf858d2",7987:"0654e75d",8032:"c8d1f2bf",8102:"df41208d",8300:"177fd31f",8411:"aa2c2bac",8494:"5137840a",8560:"5564008b",8610:"eb7c3b1b",8707:"4c79e569",8719:"a2c90a25",8808:"6bf8fe32",8835:"a46d2111",9030:"4d13c877",9035:"01fa1a8d",9171:"3b5f8c2c",9198:"8e1e2f35",9253:"adf44bc8",9311:"53cff02b",9514:"1be78505",9541:"09a85799",9660:"a14859b4",9750:"0b8ef44c",9769:"9106ea79",9911:"13b149a4",9925:"0c2b5d1a",9954:"8e5f0e39"}[e]||e)+"."+{53:"4987b961",138:"02da53b0",230:"249a948b",487:"ea5941cf",505:"843b9be5",631:"c04aab89",803:"aab38ad2",904:"2bb953de",908:"92c0d99f",1161:"194a0fd5",1168:"52ab03a0",1285:"a6d055ca",1302:"5883abea",1317:"8f881b93",1569:"90c907bf",1586:"709cef0d",1592:"f4a46217",1601:"7a267e9d",1687:"c1e4b4a4",1705:"ee7da6c6",1793:"de2bb594",1822:"1be9cdb4",1868:"da3145ce",1877:"ccbdd0ef",1895:"9028aa03",1965:"348c51a4",1969:"95f809bd",1971:"41e7e6b8",2022:"c80d9a5b",2264:"d5e04b07",2289:"3b60e717",2373:"bdd9cb8a",2375:"bdc725f9",2416:"ff5fc98d",2645:"379dd81f",2671:"22d50c8e",2894:"bc0b6879",2903:"76bfa88e",2934:"134d6a5a",2996:"046a5b6a",3214:"68cd3798",3285:"ab59b88e",3371:"010b9b5d",3420:"69fd2708",3503:"5dd21919",3635:"1b692386",4018:"bc2ec819",4123:"5cfde03a",4195:"90ede736",4456:"3c354bd3",4649:"914e895e",4724:"f6314d7a",4747:"42118be1",4822:"77c52640",4850:"b07ea5ca",4929:"2007164c",4972:"c5f9020b",5215:"ad0579f0",5264:"649fd259",5525:"c53056dc",5683:"0ba7b8ff",5873:"cbecd3ee",5983:"6305da49",6050:"79d47178",6128:"0d37aba2",6171:"ada42eb8",6191:"f0e7879c",6373:"301315b7",6390:"cc0b4777",6487:"e1e90bb1",6505:"0aec90e8",6746:"640559a4",7016:"74c348ee",7162:"3157e3e9",7278:"130817fe",7436:"e67a1736",7453:"153926c0",7462:"b42a078f",7586:"a4e09f37",7790:"dadd8c2b",7918:"44c932df",7920:"42a57863",7986:"48dccb66",7987:"8db102f4",8032:"5cc2c5fe",8102:"8213a52a",8300:"73e4371c",8411:"7cfc5257",8443:"0060be2a",8494:"6b951a5f",8560:"0019d4c1",8610:"0ba461cc",8707:"1a98aa40",8719:"744fb4a6",8808:"a802747d",8835:"4df719a4",9030:"23d7b34a",9035:"eb9f2fc0",9171:"58a18b5f",9198:"f479e0b4",9253:"5ff6be76",9311:"09e2cfc0",9514:"9cd1e63b",9523:"5d56e621",9541:"0df4d1fc",9660:"b3fb3c87",9750:"969d8279",9769:"891039fd",9911:"5fe72c79",9925:"fc378f63",9954:"92ccaa9c"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="touchsocket:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==d+c){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var l=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/touchsocket/",r.gca=function(e){return e={17896441:"7918",41627674:"2894","935f2afb":"53",fce76f89:"138","329302c4":"230",ba9c7ecd:"487","28d8f037":"505","223951e7":"631","430053de":"803",d5d2094c:"904","8154dd80":"908","5da97758":"1161","4e9c6747":"1168","1c9cad99":"1285","88be757d":"1302","11fc8f46":"1317",eafaca75:"1569","04ff01fb":"1586",a82e3754:"1592",b806365f:"1601","389c2360":"1687",d6be6cb7:"1705",da3959dc:"1793",f05a39b7:"1822","41b30073":"1868","8aa4b8ad":"1877","9e2cc891":"1895","17443a98":"1965","763782ab":"1969",b0d79caf:"1971","915634cf":"2022","0b10c115":"2264","3030335d":"2289","7c171c7d":"2373","578e6f54":"2375","9a8bd036":"2416","2740fa0a":"2645","11f9f480":"2671","0fc86718":"2903",e782541c:"2934","0afce4d0":"2996","8c4cc064":"3214",b1f68223:"3285",d22033f9:"3371",babdfbe3:"3420",b7e03a75:"3503","8973b48c":"3635","078d73b8":"4018","404aa199":"4123",c4f5d8e4:"4195","7a6724ae":"4456",e5d5df95:"4649",b4d3dab5:"4724","74ad01de":"4747","9a9e2780":"4822","91a311b4":"4850","47f1b9ba":"4929","4ecf139e":"5215","9bfb9f12":"5264","355b4941":"5683","3ab343cc":"5873","2c06b999":"5983",d6520aa6:"6050",b992e8b3:"6128","7b93349f":"6171",a81d4448:"6191","320af078":"6373",cbd4f89d:"6390",aa4c723b:"6487","965c04d6":"6505",e7e0ef60:"6746",dfe172e5:"7016","0a7a9b32":"7162","94601e7d":"7278",c8245f17:"7436","94e3a799":"7453","1ec5dc39":"7462",bc87ecb9:"7586",ce02ea51:"7790","1a4e3797":"7920",bcf858d2:"7986","0654e75d":"7987",c8d1f2bf:"8032",df41208d:"8102","177fd31f":"8300",aa2c2bac:"8411","5137840a":"8494","5564008b":"8560",eb7c3b1b:"8610","4c79e569":"8707",a2c90a25:"8719","6bf8fe32":"8808",a46d2111:"8835","4d13c877":"9030","01fa1a8d":"9035","3b5f8c2c":"9171","8e1e2f35":"9198",adf44bc8:"9253","53cff02b":"9311","1be78505":"9514","09a85799":"9541",a14859b4:"9660","0b8ef44c":"9750","9106ea79":"9769","13b149a4":"9911","0c2b5d1a":"9925","8e5f0e39":"9954"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunktouchsocket=self.webpackChunktouchsocket||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
\ No newline at end of file
(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return b[e].call(c.exports,c,c.exports,r),c.exports}r.m=b,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",138:"fce76f89",230:"329302c4",487:"ba9c7ecd",505:"28d8f037",631:"223951e7",803:"430053de",904:"d5d2094c",908:"8154dd80",1161:"5da97758",1168:"4e9c6747",1285:"1c9cad99",1302:"88be757d",1317:"11fc8f46",1569:"eafaca75",1586:"04ff01fb",1592:"a82e3754",1601:"b806365f",1687:"389c2360",1705:"d6be6cb7",1793:"da3959dc",1822:"f05a39b7",1868:"41b30073",1877:"8aa4b8ad",1895:"9e2cc891",1965:"17443a98",1969:"763782ab",1971:"b0d79caf",2022:"915634cf",2264:"0b10c115",2289:"3030335d",2373:"7c171c7d",2375:"578e6f54",2416:"9a8bd036",2645:"2740fa0a",2671:"11f9f480",2894:"41627674",2903:"0fc86718",2934:"e782541c",2996:"0afce4d0",3214:"8c4cc064",3285:"b1f68223",3371:"d22033f9",3420:"babdfbe3",3503:"b7e03a75",3635:"8973b48c",4018:"078d73b8",4123:"404aa199",4195:"c4f5d8e4",4456:"7a6724ae",4649:"e5d5df95",4724:"b4d3dab5",4747:"74ad01de",4822:"9a9e2780",4850:"91a311b4",4929:"47f1b9ba",5215:"4ecf139e",5264:"9bfb9f12",5683:"355b4941",5873:"3ab343cc",5983:"2c06b999",6050:"d6520aa6",6128:"b992e8b3",6171:"7b93349f",6191:"a81d4448",6373:"320af078",6390:"cbd4f89d",6487:"aa4c723b",6505:"965c04d6",6746:"e7e0ef60",7016:"dfe172e5",7162:"0a7a9b32",7278:"94601e7d",7436:"c8245f17",7453:"94e3a799",7462:"1ec5dc39",7586:"bc87ecb9",7790:"ce02ea51",7918:"17896441",7920:"1a4e3797",7986:"bcf858d2",7987:"0654e75d",8032:"c8d1f2bf",8102:"df41208d",8300:"177fd31f",8411:"aa2c2bac",8494:"5137840a",8560:"5564008b",8610:"eb7c3b1b",8707:"4c79e569",8719:"a2c90a25",8808:"6bf8fe32",8835:"a46d2111",9030:"4d13c877",9035:"01fa1a8d",9171:"3b5f8c2c",9198:"8e1e2f35",9253:"adf44bc8",9311:"53cff02b",9514:"1be78505",9541:"09a85799",9660:"a14859b4",9750:"0b8ef44c",9764:"9d733026",9769:"9106ea79",9911:"13b149a4",9925:"0c2b5d1a",9954:"8e5f0e39"}[e]||e)+"."+{53:"ed45c90a",138:"02da53b0",230:"249a948b",487:"f876ab81",505:"843b9be5",631:"c04aab89",803:"aab38ad2",904:"2bb953de",908:"92c0d99f",1161:"194a0fd5",1168:"52ab03a0",1285:"a6d055ca",1302:"5883abea",1317:"8f881b93",1569:"90c907bf",1586:"97f7ee31",1592:"f4a46217",1601:"7a267e9d",1687:"c1e4b4a4",1705:"ee7da6c6",1793:"de2bb594",1822:"1be9cdb4",1868:"da3145ce",1877:"ccbdd0ef",1895:"9028aa03",1965:"348c51a4",1969:"95f809bd",1971:"41e7e6b8",2022:"c80d9a5b",2264:"d5e04b07",2289:"9cd0e3a1",2373:"bdd9cb8a",2375:"bdc725f9",2416:"ff5fc98d",2645:"379dd81f",2671:"dbe3ec35",2894:"bc0b6879",2903:"76bfa88e",2934:"134d6a5a",2996:"046a5b6a",3214:"68cd3798",3285:"ab59b88e",3371:"010b9b5d",3420:"69fd2708",3503:"5dd21919",3635:"e965fee9",4018:"bc2ec819",4123:"5cfde03a",4195:"90ede736",4456:"3c354bd3",4649:"914e895e",4724:"f6314d7a",4747:"df96713b",4822:"77c52640",4850:"b07ea5ca",4929:"2007164c",4972:"c5f9020b",5215:"ad0579f0",5264:"649fd259",5525:"c53056dc",5683:"0ba7b8ff",5873:"cbecd3ee",5983:"6305da49",6050:"79d47178",6128:"0d37aba2",6171:"ada42eb8",6191:"2b9926aa",6373:"301315b7",6390:"cc0b4777",6487:"e1e90bb1",6505:"0aec90e8",6746:"640559a4",7016:"74c348ee",7162:"3157e3e9",7278:"130817fe",7436:"e67a1736",7453:"153926c0",7462:"b42a078f",7586:"a4e09f37",7790:"dadd8c2b",7918:"44c932df",7920:"42a57863",7986:"48dccb66",7987:"8db102f4",8032:"5cc2c5fe",8102:"8213a52a",8300:"73e4371c",8411:"7cfc5257",8443:"0060be2a",8494:"6b951a5f",8560:"2398a81a",8610:"0ba461cc",8707:"1a98aa40",8719:"744fb4a6",8808:"a802747d",8835:"4df719a4",9030:"23d7b34a",9035:"000770fb",9171:"58a18b5f",9198:"f479e0b4",9253:"5ff6be76",9311:"09e2cfc0",9514:"9cd1e63b",9523:"5d56e621",9541:"0df4d1fc",9660:"b3fb3c87",9750:"969d8279",9764:"af39316d",9769:"891039fd",9911:"5fe72c79",9925:"fc378f63",9954:"92ccaa9c"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="touchsocket:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var u=n[i];if(u.getAttribute("src")==e||u.getAttribute("data-webpack")==d+c){t=u;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var l=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=l.bind(null,t.onerror),t.onload=l.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.p="/touchsocket/",r.gca=function(e){return e={17896441:"7918",41627674:"2894","935f2afb":"53",fce76f89:"138","329302c4":"230",ba9c7ecd:"487","28d8f037":"505","223951e7":"631","430053de":"803",d5d2094c:"904","8154dd80":"908","5da97758":"1161","4e9c6747":"1168","1c9cad99":"1285","88be757d":"1302","11fc8f46":"1317",eafaca75:"1569","04ff01fb":"1586",a82e3754:"1592",b806365f:"1601","389c2360":"1687",d6be6cb7:"1705",da3959dc:"1793",f05a39b7:"1822","41b30073":"1868","8aa4b8ad":"1877","9e2cc891":"1895","17443a98":"1965","763782ab":"1969",b0d79caf:"1971","915634cf":"2022","0b10c115":"2264","3030335d":"2289","7c171c7d":"2373","578e6f54":"2375","9a8bd036":"2416","2740fa0a":"2645","11f9f480":"2671","0fc86718":"2903",e782541c:"2934","0afce4d0":"2996","8c4cc064":"3214",b1f68223:"3285",d22033f9:"3371",babdfbe3:"3420",b7e03a75:"3503","8973b48c":"3635","078d73b8":"4018","404aa199":"4123",c4f5d8e4:"4195","7a6724ae":"4456",e5d5df95:"4649",b4d3dab5:"4724","74ad01de":"4747","9a9e2780":"4822","91a311b4":"4850","47f1b9ba":"4929","4ecf139e":"5215","9bfb9f12":"5264","355b4941":"5683","3ab343cc":"5873","2c06b999":"5983",d6520aa6:"6050",b992e8b3:"6128","7b93349f":"6171",a81d4448:"6191","320af078":"6373",cbd4f89d:"6390",aa4c723b:"6487","965c04d6":"6505",e7e0ef60:"6746",dfe172e5:"7016","0a7a9b32":"7162","94601e7d":"7278",c8245f17:"7436","94e3a799":"7453","1ec5dc39":"7462",bc87ecb9:"7586",ce02ea51:"7790","1a4e3797":"7920",bcf858d2:"7986","0654e75d":"7987",c8d1f2bf:"8032",df41208d:"8102","177fd31f":"8300",aa2c2bac:"8411","5137840a":"8494","5564008b":"8560",eb7c3b1b:"8610","4c79e569":"8707",a2c90a25:"8719","6bf8fe32":"8808",a46d2111:"8835","4d13c877":"9030","01fa1a8d":"9035","3b5f8c2c":"9171","8e1e2f35":"9198",adf44bc8:"9253","53cff02b":"9311","1be78505":"9514","09a85799":"9541",a14859b4:"9660","0b8ef44c":"9750","9d733026":"9764","9106ea79":"9769","13b149a4":"9911","0c2b5d1a":"9925","8e5f0e39":"9954"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunktouchsocket=self.webpackChunktouchsocket||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册