提交 7a61437a 编写于 作者: 若汝棋茗

更新文档

上级 513c4eab
......@@ -8,12 +8,45 @@ namespace RpcFactoryConsoleApp
{
static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
var clientFactory = CreateTcpClientFactory();
var client = clientFactory.GetTransferClient();
try
{
//client.Invoke();//这里可以让得到的通讯单体进行业务交流
}
finally
{
//重中之重,必须要释放单体
clientFactory.ReleaseTransferClient(client);
}
}
private static TcpTouchRpcClientFactory CreateTcpClientFactory()
{
var clientFactory = new TcpTouchRpcClientFactory()
{
MinCount = 5,//最小数量,在主连接器成功建立以后,会检测可用连接是否大于该值,否的话会自动建立。
MaxCount = 10,//最大数量,当超过该数量的连接后,会等待指定时间,或者永久等待。
OnGetTransferConfig = () => //配置辅助通信
{
return new TouchSocketConfig()
.SetRemoteIPHost("tcp://127.0.0.1:7789");
}
};
clientFactory.MainConfig
.SetRemoteIPHost("tcp://127.0.0.1:7789");//配置主通信
//检测主通信器连接,然后如果没有连接,会自动建立连接
Result result = clientFactory.CheckStatus();
return clientFactory;
}
private static TcpTouchRpcClientFactory CreateClientFactory()
private static HttpTouchRpcClientFactory CreateHttpClientFactory()
{
TcpTouchRpcClientFactory clientFactory = new TcpTouchRpcClientFactory()
var clientFactory = new HttpTouchRpcClientFactory()
{
MinCount = 5,//最小数量,在主连接器成功建立以后,会检测可用连接是否大于该值,否的话会自动建立。
MaxCount = 10,//最大数量,当超过该数量的连接后,会等待指定时间,或者永久等待。
......@@ -27,6 +60,7 @@ namespace RpcFactoryConsoleApp
clientFactory.MainConfig
.SetRemoteIPHost("tcp://127.0.0.1:7789");//配置主通信
//检测主通信器连接,然后如果没有连接,会自动建立连接
Result result = clientFactory.CheckStatus();
return clientFactory;
}
......
......@@ -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.8d427d18.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/main.cc59f049.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/runtime~main.a8330f4b.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/main.0bab5ddb.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.8d427d18.js"></script>
<script src="/touchsocket/assets/js/main.cc59f049.js"></script>
<script src="/touchsocket/assets/js/runtime~main.a8330f4b.js"></script>
<script src="/touchsocket/assets/js/main.0bab5ddb.js"></script>
</body>
</html>
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[9769],{3905:(t,e,n)=>{n.d(e,{Zo:()=>u,kt:()=>h});var r=n(7294);function c(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function l(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?a(Object(n),!0).forEach((function(e){c(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):a(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function o(t,e){if(null==t)return{};var n,r,c=function(t,e){if(null==t)return{};var n,r,c={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(c[n]=t[n]);return c}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(c[n]=t[n])}return c}var p=r.createContext({}),i=function(t){var e=r.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):l(l({},e),t)),n},u=function(t){var e=i(t.components);return r.createElement(p.Provider,{value:e},t.children)},s={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},d=r.forwardRef((function(t,e){var n=t.components,c=t.mdxType,a=t.originalType,p=t.parentName,u=o(t,["components","mdxType","originalType","parentName"]),d=i(n),h=c,k=d["".concat(p,".").concat(h)]||d[h]||s[h]||a;return n?r.createElement(k,l(l({ref:e},u),{},{components:n})):r.createElement(k,l({ref:e},u))}));function h(t,e){var n=arguments,c=e&&e.mdxType;if("string"==typeof t||c){var a=n.length,l=new Array(a);l[0]=d;var o={};for(var p in e)hasOwnProperty.call(e,p)&&(o[p]=e[p]);o.originalType=t,o.mdxType="string"==typeof t?t:c,l[1]=o;for(var i=2;i<a;i++)l[i]=n[i];return r.createElement.apply(null,l)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},9882:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>p,contentTitle:()=>l,default:()=>s,frontMatter:()=>a,metadata:()=>o,toc:()=>i});var r=n(7462),c=(n(7294),n(3905));const a={id:"createtouchrpcclient",title:"\u521b\u5efaTouchRpc\u5ba2\u6237\u7aef"},l=void 0,o={unversionedId:"createtouchrpcclient",id:"createtouchrpcclient",title:"\u521b\u5efaTouchRpc\u5ba2\u6237\u7aef",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/createtouchrpcclient.mdx",sourceDirName:".",slug:"/createtouchrpcclient",permalink:"/touchsocket/docs/createtouchrpcclient",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/createtouchrpcclient.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"createtouchrpcclient",title:"\u521b\u5efaTouchRpc\u5ba2\u6237\u7aef"},sidebar:"docs",previous:{title:"\u521b\u5efaTouchRpc\u670d\u52a1\u5668",permalink:"/touchsocket/docs/createtouchrpcservice"},next:{title:"\u57fa\u7840\u529f\u80fd",permalink:"/touchsocket/docs/touchrpcbase"}},p={},i=[{value:"\u4e00\u3001\u8bf4\u660e",id:"\u4e00\u8bf4\u660e",level:2},{value:"\u4e8c\u3001\u53ef\u914d\u7f6e\u9879",id:"\u4e8c\u53ef\u914d\u7f6e\u9879",level:2},{value:"SetVerifyTimeout",id:"setverifytimeout",level:4},{value:"SetVerifyToken",id:"setverifytoken",level:4},{value:"SetHeartbeatFrequency",id:"setheartbeatfrequency",level:4},{value:"SetSerializationSelector",id:"setserializationselector",level:4},{value:"SetResponseType",id:"setresponsetype",level:4},{value:"SetRootPath",id:"setrootpath",level:4},{value:"\u4e09\u3001\u652f\u6301\u63d2\u4ef6\u63a5\u53e3",id:"\u4e09\u652f\u6301\u63d2\u4ef6\u63a5\u53e3",level:2},{value:"\u56db\u3001\u521b\u5efa",id:"\u56db\u521b\u5efa",level:2},{value:"4.1 TcpTouchRpcClient",id:"41-tcptouchrpcclient",level:3},{value:"4.2 HttpTouchRpcClient",id:"42-httptouchrpcclient",level:3},{value:"4.3 UdpTouchRpc",id:"43-udptouchrpc",level:3},{value:"4.4 WSTouchRpcClient",id:"44-wstouchrpcclient",level:3},{value:"4.5 TcpTouchRpcClientFactory",id:"45-tcptouchrpcclientfactory",level:3},{value:"4.5 HttpTouchRpcClientFactory",id:"45-httptouchrpcclientfactory",level:3}],u={toc:i};function s(t){let{components:e,...n}=t;return(0,c.kt)("wrapper",(0,r.Z)({},u,n,{components:e,mdxType:"MDXLayout"}),(0,c.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,c.kt)("p",null,"TouchRpc\u5ba2\u6237\u7aef\u5bf9\u5e94\u7684\uff0c\u4e5f\u6709\u56db\u79cd\u4e0d\u540c\u534f\u8bae\u7684\u7248\u672c\u3002"),(0,c.kt)("h2",{id:"\u4e8c\u53ef\u914d\u7f6e\u9879"},"\u4e8c\u3001\u53ef\u914d\u7f6e\u9879"),(0,c.kt)("details",null,(0,c.kt)("summary",null,"\u53ef\u914d\u7f6e\u9879"),(0,c.kt)("div",null,(0,c.kt)("h4",{id:"setverifytimeout"},"SetVerifyTimeout"),(0,c.kt)("p",null,"\u8bbe\u7f6e\u9a8c\u8bc1\u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba43000ms\u3002\uff08\u4ec5TcpTouchRpc\u53ef\u7528\uff09 \u3002"),(0,c.kt)("h4",{id:"setverifytoken"},"SetVerifyToken"),(0,c.kt)("p",null,"\u8bbe\u7f6e\u9a8c\u8bc1\u53e3\u4ee4\u3002 "),(0,c.kt)("h4",{id:"setheartbeatfrequency"},"SetHeartbeatFrequency"),(0,c.kt)("p",null,"\u8bbe\u7f6e\u5fc3\u8df3\u3002\u9ed8\u8ba4\u4e3a\u95f4\u96942000ms\uff0c\u8fde\u7eed3\u6b21\u65e0\u54cd\u5e94\u5373\u89c6\u4e3a\u65ad\u5f00\u3002"),(0,c.kt)("h4",{id:"setserializationselector"},"SetSerializationSelector"),(0,c.kt)("p",null,"\u8bbe\u7f6e\u5e8f\u5217\u5316\u9009\u62e9\u5668\u3002"),(0,c.kt)("h4",{id:"setresponsetype"},"SetResponseType"),(0,c.kt)("p",null,"\u8bbe\u7f6e\u5141\u8bb8\u7684\u54cd\u5e94\u7c7b\u578b"),(0,c.kt)("h4",{id:"setrootpath"},"SetRootPath"),(0,c.kt)("p",null,"\u8bbe\u7f6e\u6839\u8def\u5f84"))),(0,c.kt)("h2",{id:"\u4e09\u652f\u6301\u63d2\u4ef6\u63a5\u53e3"},"\u4e09\u3001\u652f\u6301\u63d2\u4ef6\u63a5\u53e3"),(0,c.kt)("p",null,"\u58f0\u660e\u81ea\u5b9a\u4e49\u5b9e\u4f8b\u7c7b\uff0c\u7136\u540e\u5b9e\u73b0",(0,c.kt)("strong",{parentName:"p"},"ITouchRpcPlugin"),"\u63a5\u53e3\uff0c\u5373\u53ef\u5b9e\u73b0\u4e0b\u5217\u4e8b\u52a1\u7684\u89e6\u53d1\u3002\n\u6216\u8005\u7ee7\u627f\u81ea",(0,c.kt)("strong",{parentName:"p"},"TouchRpcPluginBase"),"\u7c7b\uff0c\u91cd\u5199\u76f8\u5e94\u65b9\u6cd5\u5373\u53ef\u3002"),(0,c.kt)("table",null,(0,c.kt)("thead",{parentName:"table"},(0,c.kt)("tr",{parentName:"thead"},(0,c.kt)("th",{parentName:"tr",align:null},"\u63d2\u4ef6\u65b9\u6cd5"),(0,c.kt)("th",{parentName:"tr",align:null},"\u529f\u80fd"))),(0,c.kt)("tbody",{parentName:"table"},(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnHandshaking"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5ba2\u6237\u7aef\u5728\u9a8c\u8bc1\u8fde\u63a5\u3002\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6846\u67b6\u4f1a\u9996\u5148\u9a8c\u8bc1\u8fde\u63a5Token\u662f\u5426\u6b63\u786e\uff0c\u5982\u679c\u4e0d\u6b63\u786e\u5219\u76f4\u63a5\u62d2\u7edd\u3002\u4e0d\u4f1a\u6709\u4efb\u4f55\u6295\u9012\u3002\u7528\u6237\u4e5f\u53ef\u4ee5\u4f7f\u7528Metadata\u8fdb\u884c\u52a8\u6001\u9a8c\u8bc1\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnHandshaked"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5ba2\u6237\u7aef\u5b8c\u6210\u8fde\u63a5\u9a8c\u8bc1")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnFileTransfering"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5728\u6587\u4ef6\u4f20\u8f93\u5373\u5c06\u8fdb\u884c\u65f6\u89e6\u53d1\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnFileTransfered"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5f53\u6587\u4ef6\u4f20\u8f93\u7ed3\u675f\u4e4b\u540e\u3002\u5e76\u4e0d\u610f\u5473\u7740\u5b8c\u6210\u4f20\u8f93\uff0c\u8bf7\u901a\u8fc7e.Result\u5c5e\u6027\u503c\u8fdb\u884c\u5224\u65ad\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnLoadingStream"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5728\u8fdc\u7a0b\u8bf7\u6c42\u52a0\u8f7d\u6d41\u65f6\u89e6\u53d1\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnReceivedProtocolData"),(0,c.kt)("td",{parentName:"tr",align:null},"\u6536\u5230\u534f\u8bae\u6570\u636e")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnRemoteAccessing"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5728\u8fdc\u7a0b\u64cd\u4f5c\u8bbf\u95ee\u4e4b\u524d\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnRemoteAccessed"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5728\u8fdc\u7a0b\u64cd\u4f5c\u8bbf\u95ee\u4e4b\u540e\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnRouting"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5f53\u9700\u8981\u8f6c\u53d1\u8def\u7531\u5305\u65f6\u3002\u4e00\u822c\u6240\u6709\u7684",(0,c.kt)("strong",{parentName:"td"},"\u5ba2\u6237\u7aef\u4e4b\u95f4"),"\u7684\u6570\u636e\u4f20\u8f93\uff0c\u90fd\u9700\u8981\u7ecf\u8fc7\u8be5\u51fd\u6570\u7684\u8fd0\u884c\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnStreamTransfering"),(0,c.kt)("td",{parentName:"tr",align:null},"\u5373\u5c06\u63a5\u6536\u6d41\u6570\u636e\uff0c\u7528\u6237\u9700\u8981\u5728\u6b64\u4e8b\u4ef6\u4e2d\u5bf9e.Bucket\u521d\u59cb\u5316\u3002")),(0,c.kt)("tr",{parentName:"tbody"},(0,c.kt)("td",{parentName:"tr",align:null},"OnStreamTransfered"),(0,c.kt)("td",{parentName:"tr",align:null},"\u6d41\u6570\u636e\u5904\u7406\uff0c\u7528\u6237\u9700\u8981\u5728\u6b64\u4e8b\u4ef6\u4e2d\u5bf9e.Bucket\u624b\u52a8\u91ca\u653e\u3002 \u5f53\u6d41\u6570\u636e\u4f20\u8f93\u7ed3\u675f\u4e4b\u540e\u3002\u5e76\u4e0d\u610f\u5473\u7740\u5b8c\u6210\u4f20\u8f93\uff0c\u8bf7\u901a\u8fc7e.Result\u5c5e\u6027\u503c\u8fdb\u884c\u5224\u65ad\u3002")))),(0,c.kt)("h2",{id:"\u56db\u521b\u5efa"},"\u56db\u3001\u521b\u5efa"),(0,c.kt)("h3",{id:"41-tcptouchrpcclient"},"4.1 TcpTouchRpcClient"),(0,c.kt)("p",null,"\u57fa\u672c\u521b\u5efa\u5982\u4e0b\uff0c\u652f\u6301",(0,c.kt)("a",{parentName:"p",href:"/touchsocket/docs/createtcpclient"},"\u521b\u5efaTcpClient"),"\u7684\u6240\u6709\u914d\u7f6e\u3002"),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-csharp"},'TcpTouchRpcClient client = new TcpTouchRpcClient();\nclient.Setup(new TouchSocketConfig()\n .SetRemoteIPHost("127.0.0.1:7789")\n .SetVerifyToken("TouchRpc"));\nclient.Connect();\n')),(0,c.kt)("h3",{id:"42-httptouchrpcclient"},"4.2 HttpTouchRpcClient"),(0,c.kt)("p",null,"\u57fa\u672c\u521b\u5efa\u5982\u4e0b\uff0c\u652f\u6301",(0,c.kt)("a",{parentName:"p",href:"/touchsocket/docs/createtcpclient"},"\u521b\u5efaTcpClient"),"\u7684\u6240\u6709\u914d\u7f6e\u3002"),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-csharp"},'HttpTouchRpcClient client = new HttpTouchRpcClient();\nclient.Setup(new TouchSocketConfig()\n .SetRemoteIPHost("127.0.0.1:7789")\n .SetVerifyToken("TouchRpc"));\nclient.Connect();\n')),(0,c.kt)("h3",{id:"43-udptouchrpc"},"4.3 UdpTouchRpc"),(0,c.kt)("p",null,"\u57fa\u672c\u521b\u5efa\u5982\u4e0b\uff0c\u652f\u6301@\u7684\u6240\u6709\u914d\u7f6e\u3002"),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-csharp"},'UdpTouchRpc client = new UdpTouchRpc();\nclient.Setup(new TouchSocketConfig()\n .SetBindIPHost(7794)\n .SetRemoteIPHost("127.0.0.1:7789"));//\u8bbe\u7f6e\u76ee\u6807\u5730\u5740\u3002\nclient.Start();\n')),(0,c.kt)("h3",{id:"44-wstouchrpcclient"},"4.4 WSTouchRpcClient"),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-csharp"},' WSTouchRpcClient client = new WSTouchRpcClient();\n client.Setup(new TouchSocketConfig()\n .SetRemoteIPHost("ws://127.0.0.1:5000/wstouchrpc"));\n client.ConnectAsync();\n')),(0,c.kt)("h3",{id:"45-tcptouchrpcclientfactory"},"4.5 TcpTouchRpcClientFactory"),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-csharp"},'var clientFactory = new TcpTouchRpcClientFactory()\n{\n MinCount = 5,//\u6700\u5c0f\u6570\u91cf\uff0c\u5728\u4e3b\u8fde\u63a5\u5668\u6210\u529f\u5efa\u7acb\u4ee5\u540e\uff0c\u4f1a\u68c0\u6d4b\u53ef\u7528\u8fde\u63a5\u662f\u5426\u5927\u4e8e\u8be5\u503c\uff0c\u5426\u7684\u8bdd\u4f1a\u81ea\u52a8\u5efa\u7acb\u3002\n MaxCount = 10,//\u6700\u5927\u6570\u91cf\uff0c\u5f53\u8d85\u8fc7\u8be5\u6570\u91cf\u7684\u8fde\u63a5\u540e\uff0c\u4f1a\u7b49\u5f85\u6307\u5b9a\u65f6\u95f4\uff0c\u6216\u8005\u6c38\u4e45\u7b49\u5f85\u3002\n OnGetTransferConfig = () => //\u914d\u7f6e\u8f85\u52a9\u901a\u4fe1\n {\n return new TouchSocketConfig()\n .SetRemoteIPHost("tcp://127.0.0.1:7789");\n }\n};\n\nclientFactory.MainConfig\n .SetRemoteIPHost("tcp://127.0.0.1:7789");//\u914d\u7f6e\u4e3b\u901a\u4fe1\n\n//\u68c0\u6d4b\u4e3b\u901a\u4fe1\u5668\u8fde\u63a5\uff0c\u7136\u540e\u5982\u679c\u6ca1\u6709\u8fde\u63a5\uff0c\u4f1a\u81ea\u52a8\u5efa\u7acb\u8fde\u63a5\nResult result = clientFactory.CheckStatus();\n')),(0,c.kt)("h3",{id:"45-httptouchrpcclientfactory"},"4.5 HttpTouchRpcClientFactory"),(0,c.kt)("pre",null,(0,c.kt)("code",{parentName:"pre",className:"language-csharp"},'var clientFactory = new HttpTouchRpcClientFactory()\n{\n MinCount = 5,//\u6700\u5c0f\u6570\u91cf\uff0c\u5728\u4e3b\u8fde\u63a5\u5668\u6210\u529f\u5efa\u7acb\u4ee5\u540e\uff0c\u4f1a\u68c0\u6d4b\u53ef\u7528\u8fde\u63a5\u662f\u5426\u5927\u4e8e\u8be5\u503c\uff0c\u5426\u7684\u8bdd\u4f1a\u81ea\u52a8\u5efa\u7acb\u3002\n MaxCount = 10,//\u6700\u5927\u6570\u91cf\uff0c\u5f53\u8d85\u8fc7\u8be5\u6570\u91cf\u7684\u8fde\u63a5\u540e\uff0c\u4f1a\u7b49\u5f85\u6307\u5b9a\u65f6\u95f4\uff0c\u6216\u8005\u6c38\u4e45\u7b49\u5f85\u3002\n OnGetTransferConfig = () => //\u914d\u7f6e\u8f85\u52a9\u901a\u4fe1\n {\n return new TouchSocketConfig()\n .SetRemoteIPHost("tcp://127.0.0.1:7789");\n }\n};\n\nclientFactory.MainConfig\n .SetRemoteIPHost("tcp://127.0.0.1:7789");//\u914d\u7f6e\u4e3b\u901a\u4fe1\n\n//\u68c0\u6d4b\u4e3b\u901a\u4fe1\u5668\u8fde\u63a5\uff0c\u7136\u540e\u5982\u679c\u6ca1\u6709\u8fde\u63a5\uff0c\u4f1a\u81ea\u52a8\u5efa\u7acb\u8fde\u63a5\nResult result = clientFactory.CheckStatus();\n\n')))}s.isMDXComponent=!0}}]);
\ No newline at end of file
此差异已折叠。
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[3503],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>g});var r=n(7294);function i(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 a(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){i(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,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(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)&&(i[n]=e[n])}return i}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},s=function(e){var t=p(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,i=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(n),g=i,f=d["".concat(l,".").concat(g)]||d[g]||u[g]||o;return n?r.createElement(f,a(a({ref:t},s),{},{components:n})):r.createElement(f,a({ref:t},s))}));function g(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[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:i,a[1]=c;for(var p=2;p<o;p++)a[p]=n[p];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},8744:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const o={id:"waitingclient",title:"\u540c\u6b65\u8bf7\u6c42"},a=void 0,c={unversionedId:"waitingclient",id:"waitingclient",title:"\u540c\u6b65\u8bf7\u6c42",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/waitingclient.mdx",sourceDirName:".",slug:"/waitingclient",permalink:"/touchsocket/docs/waitingclient",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/waitingclient.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675770803,formattedLastUpdatedAt:"Feb 7, 2023",frontMatter:{id:"waitingclient",title:"\u540c\u6b65\u8bf7\u6c42"},sidebar:"docs",previous:{title:"\u521b\u5efaTcpClient",permalink:"/touchsocket/docs/createtcpclient"},next:{title:"Tcp\u7aef\u53e3\u8f6c\u53d1",permalink:"/touchsocket/docs/natservice"}},l={},p=[{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 \u4ee5TcpClient\u4e3a\u4f8b",id:"21-\u4ee5tcpclient\u4e3a\u4f8b",level:3},{value:"2.2 \u4ee5TcpService\u4e3a\u4f8b",id:"22-\u4ee5tcpservice\u4e3a\u4f8b",level:3}],s={toc:p};function u(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,i.kt)("p",null,"\u6709\u5f88\u591a\u5c0f\u4f19\u4f34\u4e00\u76f4\u6709\u4e00\u4e9b\u9700\u6c42\uff1a"),(0,i.kt)("ol",null,(0,i.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,i.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,i.kt)("p",null,"\u90a3\u9488\u5bf9\u8fd9\u4e9b\u9700\u6c42\uff0c\u53ef\u4ee5\u4f7f\u7528",(0,i.kt)("strong",{parentName:"p"},"WaitingClient\u3002"),"\u5176\u5185\u90e8\u5b9e\u73b0\u4e86",(0,i.kt)("strong",{parentName:"p"},"IWaitSender"),"\u63a5\u53e3\uff0c\u80fd\u591f\u5728\u53d1\u9001\u5b8c\u6210\u540e\uff0c\u7b49\u5f85\u8fd4\u56de\u3002"),(0,i.kt)("h2",{id:"\u4e8c\u521b\u5efa\u53ca\u4f7f\u7528"},"\u4e8c\u3001\u521b\u5efa\u53ca\u4f7f\u7528"),(0,i.kt)("h3",{id:"21-\u4ee5tcpclient\u4e3a\u4f8b"},"2.1 \u4ee5TcpClient\u4e3a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-csharp"},'TcpClient m_tcpClient = new TcpClient();\nvar config = new TouchSocketConfig();\nconfig.SetRemoteIPHost(new IPHost("127.0.0.1:7789"));\n\n//\u8f7d\u5165\u914d\u7f6e\nm_tcpClient.Setup(config);\nm_tcpClient.Connect();\n\n//\u8c03\u7528GetWaitingClient\u83b7\u53d6\u5230IWaitingClient\u7684\u5bf9\u8c61\u3002\nvar waitClient = m_tcpClient.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 BreakTrigger = true,//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u4f1a\u7acb\u5373\u89e6\u53d1\n ThrowBreakException = true//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u662f\u5426\u89e6\u53d1\u5f02\u5e38\n});\n\n//\u7136\u540e\u4f7f\u7528SendThenReturn\u3002\nbyte[] returnData = waitClient.SendThenReturn(Encoding.UTF8.GetBytes("RRQM"));\nm_tcpClient.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,i.kt)("h3",{id:"22-\u4ee5tcpservice\u4e3a\u4f8b"},"2.2 \u4ee5TcpService\u4e3a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new TcpService();\nservice.Received = (client, byteBlock, requestInfo) =>\n{\n //\u8c03\u7528GetWaitingClient\u83b7\u53d6\u5230IWaitingClient\u7684\u5bf9\u8c61\u3002\n var waitClient = client.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 BreakTrigger = true,//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u4f1a\u7acb\u5373\u89e6\u53d1\n ThrowBreakException = true//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u662f\u5426\u89e6\u53d1\u5f02\u5e38\n });\n\n //\u7136\u540e\u4f7f\u7528SendThenReturn\u3002\n byte[] returnData = waitClient.SendThenReturn(Encoding.UTF8.GetBytes("RRQM"));\n client.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.\n ResponsedData responsedData = waitClient.SendThenResponse(Encoding.UTF8.GetBytes("RRQM"));\n IRequestInfo responseRequestInfo = responsedData.RequestInfo;//\u540c\u6b65\u6536\u5230\u7684RequestInfo\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost("tcp://127.0.0.1:7789"), new IPHost(7790) })//\u540c\u65f6\u76d1\u542c\u4e24\u4e2a\u5730\u5740\n .ConfigureContainer(a =>//\u5bb9\u5668\u7684\u914d\u7f6e\u987a\u5e8f\u5e94\u8be5\u5728\u6700\u524d\u9762\n {\n a.AddConsoleLogger();//\u6dfb\u52a0\u4e00\u4e2a\u63a7\u5236\u53f0\u65e5\u5fd7\u6ce8\u5165\uff08\u6ce8\u610f\uff1a\u5728maui\u4e2d\u63a7\u5236\u53f0\u65e5\u5fd7\u4e0d\u53ef\u7528\uff09\n })\n .ConfigurePlugins(a =>\n {\n //a.Add();//\u6b64\u5904\u53ef\u4ee5\u6dfb\u52a0\u63d2\u4ef6\n }))\n .Start();//\u542f\u52a8\n')),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.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,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.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,i.kt)("admonition",{title:"\u6ce8\u610f\u4e8b\u9879",type:"danger"},(0,i.kt)("ol",{parentName:"admonition"},(0,i.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,i.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"))))}u.isMDXComponent=!0}}]);
\ No newline at end of file
"use strict";(self.webpackChunktouchsocket=self.webpackChunktouchsocket||[]).push([[3503],{3905:(e,t,n)=>{n.d(t,{Zo:()=>s,kt:()=>g});var r=n(7294);function i(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 a(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){i(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,i=function(e,t){if(null==e)return{};var n,r,i={},o=Object.keys(e);for(r=0;r<o.length;r++)n=o[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}(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)&&(i[n]=e[n])}return i}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},s=function(e){var t=p(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,i=e.mdxType,o=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(n),g=i,f=d["".concat(l,".").concat(g)]||d[g]||u[g]||o;return n?r.createElement(f,a(a({ref:t},s),{},{components:n})):r.createElement(f,a({ref:t},s))}));function g(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[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:i,a[1]=c;for(var p=2;p<o;p++)a[p]=n[p];return r.createElement.apply(null,a)}return r.createElement.apply(null,n)}d.displayName="MDXCreateElement"},8744:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>a,default:()=>u,frontMatter:()=>o,metadata:()=>c,toc:()=>p});var r=n(7462),i=(n(7294),n(3905));const o={id:"waitingclient",title:"\u540c\u6b65\u8bf7\u6c42"},a=void 0,c={unversionedId:"waitingclient",id:"waitingclient",title:"\u540c\u6b65\u8bf7\u6c42",description:"\u4e00\u3001\u8bf4\u660e",source:"@site/docs/waitingclient.mdx",sourceDirName:".",slug:"/waitingclient",permalink:"/touchsocket/docs/waitingclient",draft:!1,editUrl:"https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/waitingclient.mdx",tags:[],version:"current",lastUpdatedBy:"\u82e5\u6c5d\u68cb\u8317",lastUpdatedAt:1675843646,formattedLastUpdatedAt:"Feb 8, 2023",frontMatter:{id:"waitingclient",title:"\u540c\u6b65\u8bf7\u6c42"},sidebar:"docs",previous:{title:"\u521b\u5efaTcpClient",permalink:"/touchsocket/docs/createtcpclient"},next:{title:"Tcp\u7aef\u53e3\u8f6c\u53d1",permalink:"/touchsocket/docs/natservice"}},l={},p=[{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 \u4ee5TcpClient\u4e3a\u4f8b",id:"21-\u4ee5tcpclient\u4e3a\u4f8b",level:3},{value:"2.2 \u4ee5TcpService\u4e3a\u4f8b",id:"22-\u4ee5tcpservice\u4e3a\u4f8b",level:3}],s={toc:p};function u(e){let{components:t,...n}=e;return(0,i.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"\u4e00\u8bf4\u660e"},"\u4e00\u3001\u8bf4\u660e"),(0,i.kt)("p",null,"\u6709\u5f88\u591a\u5c0f\u4f19\u4f34\u4e00\u76f4\u6709\u4e00\u4e9b\u9700\u6c42\uff1a"),(0,i.kt)("ol",null,(0,i.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,i.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,i.kt)("p",null,"\u90a3\u9488\u5bf9\u8fd9\u4e9b\u9700\u6c42\uff0c\u53ef\u4ee5\u4f7f\u7528",(0,i.kt)("strong",{parentName:"p"},"WaitingClient\u3002"),"\u5176\u5185\u90e8\u5b9e\u73b0\u4e86",(0,i.kt)("strong",{parentName:"p"},"IWaitSender"),"\u63a5\u53e3\uff0c\u80fd\u591f\u5728\u53d1\u9001\u5b8c\u6210\u540e\uff0c\u7b49\u5f85\u8fd4\u56de\u3002"),(0,i.kt)("h2",{id:"\u4e8c\u521b\u5efa\u53ca\u4f7f\u7528"},"\u4e8c\u3001\u521b\u5efa\u53ca\u4f7f\u7528"),(0,i.kt)("h3",{id:"21-\u4ee5tcpclient\u4e3a\u4f8b"},"2.1 \u4ee5TcpClient\u4e3a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-csharp"},'TcpClient m_tcpClient = new TcpClient();\nvar config = new TouchSocketConfig();\nconfig.SetRemoteIPHost(new IPHost("127.0.0.1:7789"));\n\n//\u8f7d\u5165\u914d\u7f6e\nm_tcpClient.Setup(config);\nm_tcpClient.Connect();\n\n//\u8c03\u7528GetWaitingClient\u83b7\u53d6\u5230IWaitingClient\u7684\u5bf9\u8c61\u3002\nvar waitClient = m_tcpClient.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 BreakTrigger = true,//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u4f1a\u7acb\u5373\u89e6\u53d1\n ThrowBreakException = true//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u662f\u5426\u89e6\u53d1\u5f02\u5e38\n});\n\n//\u7136\u540e\u4f7f\u7528SendThenReturn\u3002\nbyte[] returnData = waitClient.SendThenReturn(Encoding.UTF8.GetBytes("RRQM"));\nm_tcpClient.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,i.kt)("h3",{id:"22-\u4ee5tcpservice\u4e3a\u4f8b"},"2.2 \u4ee5TcpService\u4e3a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-csharp"},'var service = new TcpService();\nservice.Received = (client, byteBlock, requestInfo) =>\n{\n //\u8c03\u7528GetWaitingClient\u83b7\u53d6\u5230IWaitingClient\u7684\u5bf9\u8c61\u3002\n var waitClient = client.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 BreakTrigger = true,//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u4f1a\u7acb\u5373\u89e6\u53d1\n ThrowBreakException = true//\u8868\u793a\u5f53\u8fde\u63a5\u65ad\u5f00\u65f6\uff0c\u662f\u5426\u89e6\u53d1\u5f02\u5e38\n });\n\n //\u7136\u540e\u4f7f\u7528SendThenReturn\u3002\n byte[] returnData = waitClient.SendThenReturn(Encoding.UTF8.GetBytes("RRQM"));\n client.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.\n ResponsedData responsedData = waitClient.SendThenResponse(Encoding.UTF8.GetBytes("RRQM"));\n IRequestInfo responseRequestInfo = responsedData.RequestInfo;//\u540c\u6b65\u6536\u5230\u7684RequestInfo\n};\n\nservice.Setup(new TouchSocketConfig()//\u8f7d\u5165\u914d\u7f6e \n .SetListenIPHosts(new IPHost[] { new IPHost("tcp://127.0.0.1:7789"), new IPHost(7790) })//\u540c\u65f6\u76d1\u542c\u4e24\u4e2a\u5730\u5740\n .ConfigureContainer(a =>//\u5bb9\u5668\u7684\u914d\u7f6e\u987a\u5e8f\u5e94\u8be5\u5728\u6700\u524d\u9762\n {\n a.AddConsoleLogger();//\u6dfb\u52a0\u4e00\u4e2a\u63a7\u5236\u53f0\u65e5\u5fd7\u6ce8\u5165\uff08\u6ce8\u610f\uff1a\u5728maui\u4e2d\u63a7\u5236\u53f0\u65e5\u5fd7\u4e0d\u53ef\u7528\uff09\n })\n .ConfigurePlugins(a =>\n {\n //a.Add();//\u6b64\u5904\u53ef\u4ee5\u6dfb\u52a0\u63d2\u4ef6\n }))\n .Start();//\u542f\u52a8\n')),(0,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.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,i.kt)("admonition",{title:"\u63d0\u793a",type:"tip"},(0,i.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,i.kt)("admonition",{title:"\u6ce8\u610f\u4e8b\u9879",type:"danger"},(0,i.kt)("ol",{parentName:"admonition"},(0,i.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,i.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"))))}u.isMDXComponent=!0}}]);
\ No newline at end of file
此差异已折叠。
此差异已折叠。
(()=>{"use strict";var e,a,c,f,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,f,b]},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 b=Object.create(null);r.r(b);var d={};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=>d[a]=()=>e[a]));return d.default=()=>e,r.d(b,d),b},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",2289:"3030335d",2373:"7c171c7d",2375:"578e6f54",2416:"9a8bd036",2671:"11f9f480",2894:"41627674",2903:"0fc86718",2934:"e782541c",2996:"0afce4d0",3214:"8c4cc064",3285:"b1f68223",3371:"d22033f9",3420:"babdfbe3",3503:"b7e03a75",3635:"8973b48c",4018:"078d73b8",4195:"c4f5d8e4",4456:"7a6724ae",4649:"e5d5df95",4724:"b4d3dab5",4850:"91a311b4",4929:"47f1b9ba",5215:"4ecf139e",5264:"9bfb9f12",5683:"355b4941",5725:"19a46420",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",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:"8530e5a0",138:"080d0f1c",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:"17722c0a",1822:"1be9cdb4",1868:"3ff426ab",1877:"ccbdd0ef",1895:"9028aa03",1965:"3b2a7c19",1969:"95f809bd",1971:"41e7e6b8",2022:"c80d9a5b",2289:"3b60e717",2373:"bdd9cb8a",2375:"bdc725f9",2416:"ff5fc98d",2671:"68d6f16d",2894:"bc0b6879",2903:"76bfa88e",2934:"f671d806",2996:"046a5b6a",3214:"68cd3798",3285:"ab59b88e",3371:"c90129fb",3420:"69fd2708",3503:"af21877c",3635:"1b692386",4018:"bc2ec819",4195:"90ede736",4456:"3c354bd3",4649:"914e895e",4724:"f6314d7a",4850:"b07ea5ca",4929:"2007164c",4972:"c5f9020b",5215:"ad0579f0",5264:"649fd259",5525:"c53056dc",5683:"3d0c2bc7",5725:"cdfac3c8",5873:"818c7ead",5983:"49cc43ea",6050:"79d47178",6128:"0d37aba2",6171:"20f83bb5",6191:"f0e7879c",6373:"301315b7",6390:"cc0b4777",6487:"e1e90bb1",6505:"0aec90e8",6746:"640559a4",7016:"30c8f5dc",7162:"60073576",7278:"130817fe",7436:"e67a1736",7453:"153926c0",7462:"b42a078f",7586:"c2fb89f3",7790:"dadd8c2b",7918:"b995d36c",7920:"42a57863",7986:"48dccb66",7987:"8db102f4",8032:"5cc2c5fe",8102:"8213a52a",8300:"73e4371c",8411:"7cfc5257",8443:"0060be2a",8494:"40689aa2",8610:"0ba461cc",8707:"3370ac7b",8719:"744fb4a6",8808:"a802747d",8835:"922b118e",9030:"23d7b34a",9035:"eb9f2fc0",9171:"58a18b5f",9198:"f479e0b4",9253:"5ff6be76",9311:"fc4ed1da",9514:"9cd1e63b",9523:"5d56e621",9541:"0df4d1fc",9660:"b3fb3c87",9750:"969d8279",9769:"19c12be9",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={},b="touchsocket:",r.l=(e,a,c,d)=>{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")==b+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",b+c),t.src=e),f[e]=[a];var l=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.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","3030335d":"2289","7c171c7d":"2373","578e6f54":"2375","9a8bd036":"2416","11f9f480":"2671","0fc86718":"2903",e782541c:"2934","0afce4d0":"2996","8c4cc064":"3214",b1f68223:"3285",d22033f9:"3371",babdfbe3:"3420",b7e03a75:"3503","8973b48c":"3635","078d73b8":"4018",c4f5d8e4:"4195","7a6724ae":"4456",e5d5df95:"4649",b4d3dab5:"4724","91a311b4":"4850","47f1b9ba":"4929","4ecf139e":"5215","9bfb9f12":"5264","355b4941":"5683","19a46420":"5725","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",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 b=new Promise(((c,b)=>f=e[a]=[c,b]));c.push(f[2]=b);var d=r.p+r.u(a),t=new Error;r.l(d,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+d+")",t.name="ChunkLoadError",t.type=b,t.request=d,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,b,d=c[0],t=c[1],o=c[2],n=0;if(d.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<d.length;n++)b=d[n],r.o(e,b)&&e[b]&&e[b][0](),e[b]=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,b,d={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={exports:{}};return d[e].call(c.exports,c,c.exports,r),c.exports}r.m=d,e=[],r.O=(a,c,f,b)=>{if(!c){var d=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],b=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&b||d>=b)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,b<d&&(d=b));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}b=b||0;for(var i=e.length;i>0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[c,f,b]},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 b=Object.create(null);r.r(b);var d={};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=>d[a]=()=>e[a]));return d.default=()=>e,r.d(b,d),b},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",2289:"3030335d",2373:"7c171c7d",2375:"578e6f54",2416:"9a8bd036",2671:"11f9f480",2894:"41627674",2903:"0fc86718",2934:"e782541c",2996:"0afce4d0",3214:"8c4cc064",3285:"b1f68223",3371:"d22033f9",3420:"babdfbe3",3503:"b7e03a75",3635:"8973b48c",4018:"078d73b8",4195:"c4f5d8e4",4456:"7a6724ae",4649:"e5d5df95",4724:"b4d3dab5",4850:"91a311b4",4929:"47f1b9ba",5215:"4ecf139e",5264:"9bfb9f12",5683:"355b4941",5725:"19a46420",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",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:"8530e5a0",138:"080d0f1c",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:"3ff426ab",1877:"ccbdd0ef",1895:"9028aa03",1965:"3b2a7c19",1969:"95f809bd",1971:"41e7e6b8",2022:"c80d9a5b",2289:"3b60e717",2373:"bdd9cb8a",2375:"bdc725f9",2416:"ff5fc98d",2671:"68d6f16d",2894:"bc0b6879",2903:"76bfa88e",2934:"f671d806",2996:"046a5b6a",3214:"68cd3798",3285:"ab59b88e",3371:"c90129fb",3420:"69fd2708",3503:"5dd21919",3635:"1b692386",4018:"bc2ec819",4195:"90ede736",4456:"3c354bd3",4649:"914e895e",4724:"f6314d7a",4850:"b07ea5ca",4929:"2007164c",4972:"c5f9020b",5215:"ad0579f0",5264:"649fd259",5525:"c53056dc",5683:"3d0c2bc7",5725:"cdfac3c8",5873:"818c7ead",5983:"49cc43ea",6050:"79d47178",6128:"0d37aba2",6171:"20f83bb5",6191:"f0e7879c",6373:"301315b7",6390:"cc0b4777",6487:"e1e90bb1",6505:"0aec90e8",6746:"640559a4",7016:"30c8f5dc",7162:"60073576",7278:"130817fe",7436:"e67a1736",7453:"153926c0",7462:"b42a078f",7586:"c2fb89f3",7790:"dadd8c2b",7918:"b995d36c",7920:"42a57863",7986:"48dccb66",7987:"8db102f4",8032:"5cc2c5fe",8102:"8213a52a",8300:"73e4371c",8411:"7cfc5257",8443:"0060be2a",8494:"40689aa2",8610:"0ba461cc",8707:"3370ac7b",8719:"744fb4a6",8808:"a802747d",8835:"922b118e",9030:"23d7b34a",9035:"eb9f2fc0",9171:"58a18b5f",9198:"f479e0b4",9253:"5ff6be76",9311:"fc4ed1da",9514:"9cd1e63b",9523:"5d56e621",9541:"0df4d1fc",9660:"b3fb3c87",9750:"969d8279",9769:"d5d152c1",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={},b="touchsocket:",r.l=(e,a,c,d)=>{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")==b+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",b+c),t.src=e),f[e]=[a];var l=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var b=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),b&&b.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","3030335d":"2289","7c171c7d":"2373","578e6f54":"2375","9a8bd036":"2416","11f9f480":"2671","0fc86718":"2903",e782541c:"2934","0afce4d0":"2996","8c4cc064":"3214",b1f68223:"3285",d22033f9:"3371",babdfbe3:"3420",b7e03a75:"3503","8973b48c":"3635","078d73b8":"4018",c4f5d8e4:"4195","7a6724ae":"4456",e5d5df95:"4649",b4d3dab5:"4724","91a311b4":"4850","47f1b9ba":"4929","4ecf139e":"5215","9bfb9f12":"5264","355b4941":"5683","19a46420":"5725","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",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 b=new Promise(((c,b)=>f=e[a]=[c,b]));c.push(f[2]=b);var d=r.p+r.u(a),t=new Error;r.l(d,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var b=c&&("load"===c.type?"missing":c.type),d=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+b+": "+d+")",t.name="ChunkLoadError",t.type=b,t.request=d,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,b,d=c[0],t=c[1],o=c[2],n=0;if(d.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<d.length;n++)b=d[n],r.o(e,b)&&e[b]&&e[b][0](),e[b]=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
......@@ -4,13 +4,13 @@
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v2.3.1">
<title data-rh="true">FPS实时游戏 | 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/docs/fpsgame"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="FPS实时游戏 | TouchSocket"><meta data-rh="true" name="description" content="B站首页"><meta data-rh="true" property="og:description" content="B站首页"><link data-rh="true" rel="icon" href="/touchsocket/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://rrqm_home.gitee.io/touchsocket/docs/fpsgame"><link data-rh="true" rel="alternate" href="https://rrqm_home.gitee.io/touchsocket/docs/fpsgame" hreflang="en"><link data-rh="true" rel="alternate" href="https://rrqm_home.gitee.io/touchsocket/docs/fpsgame" hreflang="x-default"><link rel="stylesheet" href="/touchsocket/assets/css/styles.d72046aa.css">
<link rel="preload" href="/touchsocket/assets/js/runtime~main.8d427d18.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/main.cc59f049.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/runtime~main.a8330f4b.js" as="script">
<link rel="preload" href="/touchsocket/assets/js/main.0bab5ddb.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 aria-current="page" class="navbar__item navbar__link navbar__link--active" 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 docsWrapper_BCFX"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type="button"></button><div class="docPage__5DB"><aside class="theme-doc-sidebar-container docSidebarContainer_b6E3"><div class="sidebarViewport_Xe31"><div class="sidebar_njMd sidebarWithHideableNavbar_wUlq"><a tabindex="-1" class="sidebarLogo_isFc" href="/touchsocket/"><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"><b>TouchSocket</b></a><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/touchsocket/docs/">01、说明(使用前必要阅读)</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/touchsocket/docs/upgrade">02、历史更新</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" href="/touchsocket/docs/donate">03、支持作者及商业运营</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/touchsocket/docs/donate">3.1 支持作者</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/touchsocket/docs/enterprise">3.2 企业版相关</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" tabindex="0" href="/touchsocket/docs/cooperation">3.3 商业项目</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-2 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" aria-expanded="true" tabindex="0" href="/touchsocket/docs/fpsgame">3.4 使用者项目</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/touchsocket/docs/fpsgame">a.FPS实时游戏</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-3 menu__list-item"><a class="menu__link" tabindex="0" href="/touchsocket/docs/engineertoolbox">b.工程师软件工具箱</a></li></ul></li></ul></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/touchsocket/docs/startguide">04、入门指南</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/bytepool">05、Core</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/tcpintroduction">06、Tcp组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/createudpsession">07、Udp组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/adapterdescription">08、数据处理适配器</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/createhttpservice">09、Http组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/websocketdescription">10、WebSocket组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/touchrpcdescription">11、TouchRpc组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/webapidescription">12、WebApi组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/jsonrpcdescription">13、JsonRpc组件</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--sublist-caret" aria-expanded="false" href="/touchsocket/docs/xmlrpcdescription">14、XmlRpc组件件</a></div></li></ul></nav><button type="button" title="Collapse sidebar" aria-label="Collapse sidebar" class="button button--secondary button--outline collapseSidebarButton_PEFL"><svg width="20" height="20" aria-hidden="true" class="collapseSidebarButtonIcon_kv0_"><g fill="#7a7a7a"><path d="M9.992 10.023c0 .2-.062.399-.172.547l-4.996 7.492a.982.982 0 01-.828.454H1c-.55 0-1-.453-1-1 0-.2.059-.403.168-.551l4.629-6.942L.168 3.078A.939.939 0 010 2.528c0-.548.45-.997 1-.997h2.996c.352 0 .649.18.828.45L9.82 9.472c.11.148.172.347.172.55zm0 0"></path><path d="M19.98 10.023c0 .2-.058.399-.168.547l-4.996 7.492a.987.987 0 01-.828.454h-3c-.547 0-.996-.453-.996-1 0-.2.059-.403.168-.551l4.625-6.942-4.625-6.945a.939.939 0 01-.168-.55 1 1 0 01.996-.997h3c.348 0 .649.18.828.45l4.996 7.492c.11.148.168.347.168.55zm0 0"></path></g></svg></button></div></div></aside><main class="docMainContainer_gTbr"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_VOVn"><div class="docItemContainer_Djhp"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label="Breadcrumbs"><ul class="breadcrumbs" itemscope="" itemtype="https://schema.org/BreadcrumbList"><li class="breadcrumbs__item"><a aria-label="Home page" class="breadcrumbs__link" href="/touchsocket/"><svg viewBox="0 0 24 24" class="breadcrumbHomeIcon_YNFT"><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill="currentColor"></path></svg></a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">03、支持作者及商业运营</span><meta itemprop="position" content="1"></li><li class="breadcrumbs__item"><span class="breadcrumbs__link">3.4 使用者项目</span><meta itemprop="position" content="2"></li><li itemscope="" itemprop="itemListElement" itemtype="https://schema.org/ListItem" class="breadcrumbs__item breadcrumbs__item--active"><span class="breadcrumbs__link" itemprop="name">a.FPS实时游戏</span><meta itemprop="position" content="3"></li></ul></nav><div class="theme-doc-markdown markdown"><header><h1>FPS实时游戏</h1></header><p><a href="https://space.bilibili.com/41336899" target="_blank" rel="noopener noreferrer">B站首页</a></p></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://gitee.com/rrqm_home/touchsocket/tree/master/handbook/docs/fpsgame.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><script async="" src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><div class="col lastUpdated_VsjB">📖<span id="busuanzi_value_page_pv"></span><br><span class="theme-last-updated">Last updated<!-- --> on <b><time datetime="2023-02-07T11:53:23.000Z">Feb 7, 2023</time></b> by <b>若汝棋茗</b></span></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><a class="pagination-nav__link pagination-nav__link--prev" href="/touchsocket/docs/webdataforwarding"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Web数据转发Winform项目</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/touchsocket/docs/engineertoolbox"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">工程师软件工具箱</div></a></nav></div></div></div></div></main></div></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.8d427d18.js"></script>
<script src="/touchsocket/assets/js/main.cc59f049.js"></script>
<script src="/touchsocket/assets/js/runtime~main.a8330f4b.js"></script>
<script src="/touchsocket/assets/js/main.0bab5ddb.js"></script>
</body>
</html>
\ No newline at end of file
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册