Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ AcceptWebSocketAsyncCore()

static async Task< HttpListenerWebSocketContext > System.Net.WebSockets.HttpWebSocket.AcceptWebSocketAsyncCore ( HttpListenerContext context,
string subProtocol,
int receiveBufferSize,
TimeSpan keepAliveInterval,
ArraySegment< byte > internalBuffer )
inlinestaticprivate

Definition at line 128 of file HttpWebSocket.cs.

129 {
130 try
131 {
132 HttpListenerResponse response = context.Response;
133 HttpListenerRequest request = context.Request;
135 string secWebSocketVersion = request.Headers["Sec-WebSocket-Version"];
136 string origin = request.Headers["Origin"];
138 if (ProcessWebSocketProtocolHeader(request.Headers["Sec-WebSocket-Protocol"], subProtocol, out var acceptProtocol))
139 {
141 response.Headers.Add("Sec-WebSocket-Protocol", acceptProtocol);
142 }
143 string secWebSocketKey = request.Headers["Sec-WebSocket-Key"];
145 response.Headers.Add("Connection", "Upgrade");
146 response.Headers.Add("Upgrade", "websocket");
147 response.Headers.Add("Sec-WebSocket-Accept", secWebSocketAcceptString);
148 response.StatusCode = 101;
149 response.ComputeCoreHeaders();
150 ulong num = SendWebSocketHeaders(response);
151 if (num != 0L)
152 {
153 throw new WebSocketException((int)num, System.SR.Format(System.SR.net_WebSockets_NativeSendResponseHeaders, "AcceptWebSocketAsync", num));
154 }
155 if (System.Net.NetEventSource.Log.IsEnabled())
156 {
157 System.Net.NetEventSource.Info(null, FormattableStringFactory.Create("{0} = {1}", "Origin", origin), "AcceptWebSocketAsyncCore");
158 System.Net.NetEventSource.Info(null, FormattableStringFactory.Create("{0} = {1}", "Sec-WebSocket-Version", secWebSocketVersion), "AcceptWebSocketAsyncCore");
159 System.Net.NetEventSource.Info(null, FormattableStringFactory.Create("{0} = {1}", "Sec-WebSocket-Key", secWebSocketKey), "AcceptWebSocketAsyncCore");
160 System.Net.NetEventSource.Info(null, FormattableStringFactory.Create("{0} = {1}", "Sec-WebSocket-Accept", secWebSocketAcceptString), "AcceptWebSocketAsyncCore");
161 System.Net.NetEventSource.Info(null, FormattableStringFactory.Create("{0} = {1}", "Sec-WebSocket-Protocol", request.Headers["Sec-WebSocket-Protocol"]), "AcceptWebSocketAsyncCore");
162 System.Net.NetEventSource.Info(null, FormattableStringFactory.Create("{0} = {1}", "Sec-WebSocket-Protocol", acceptProtocol), "AcceptWebSocketAsyncCore");
163 }
164 await response.OutputStream.FlushAsync().SuppressContextFlow();
165 HttpResponseStream outputStream = response.OutputStream as HttpResponseStream;
166 ((HttpResponseStream)response.OutputStream).SwitchToOpaqueMode();
167 HttpRequestStream httpRequestStream = new HttpRequestStream(context);
168 httpRequestStream.SwitchToOpaqueMode();
169 WebSocketHttpListenerDuplexStream innerStream = new WebSocketHttpListenerDuplexStream(httpRequestStream, outputStream, context);
171 HttpListenerWebSocketContext httpListenerWebSocketContext = new HttpListenerWebSocketContext(request.Url, request.Headers, request.Cookies, context.User, request.IsAuthenticated, request.IsLocal, request.IsSecureConnection, origin, secWebSocketProtocols.AsReadOnly(), secWebSocketVersion, secWebSocketKey, webSocket);
172 if (System.Net.NetEventSource.Log.IsEnabled())
173 {
174 System.Net.NetEventSource.Associate(context, httpListenerWebSocketContext, "AcceptWebSocketAsyncCore");
176 }
178 }
179 catch (Exception message)
180 {
181 if (System.Net.NetEventSource.Log.IsEnabled())
182 {
183 System.Net.NetEventSource.Error(context, message, "AcceptWebSocketAsyncCore");
184 }
185 throw;
186 }
187 }
void Add(TKey key, TValue value)
static readonly System.Net.NetEventSource Log
static void Info(object thisOrContextObject, FormattableString formattableString=null, [CallerMemberName] string memberName=null)
static void Error(object thisOrContextObject, FormattableString formattableString, [CallerMemberName] string memberName=null)
static void Associate(object first, object second, [CallerMemberName] string memberName=null)
static string GetSecWebSocketAcceptString(string secWebSocketKey)
static bool ProcessWebSocketProtocolHeader(string clientSecWebSocketProtocol, string subProtocol, out string acceptProtocol)
static void ValidateWebSocketHeaders(HttpListenerContext context)
static unsafe ulong SendWebSocketHeaders(HttpListenerResponse response)
static FormattableString Create(string format, params object?[] arguments)
static string net_WebSockets_NativeSendResponseHeaders
Definition SR.cs:124
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7

References System.Collections.Generic.Dictionary< TKey, TValue >.Add(), System.Net.NetEventSource.Associate(), System.Net.WebSockets.ServerWebSocket.Create(), System.Runtime.CompilerServices.FormattableStringFactory.Create(), System.Net.NetEventSource.Error(), System.SR.Format(), System.Net.WebSockets.HttpWebSocket.GetSecWebSocketAcceptString(), System.Net.NetEventSource.Info(), System.L, System.Net.NetEventSource.Log, System.SR.net_WebSockets_NativeSendResponseHeaders, System.Net.WebSockets.HttpWebSocket.ProcessWebSocketProtocolHeader(), System.Net.HttpListenerContext.Request, System.Net.HttpListenerContext.Response, System.Net.WebSockets.HttpWebSocket.SendWebSocketHeaders(), System.Net.HttpResponseStream.SwitchToOpaqueMode(), System.Net.HttpListenerContext.User, and System.Net.WebSockets.HttpWebSocket.ValidateWebSocketHeaders().

Referenced by System.Net.WebSockets.HttpWebSocket.AcceptWebSocketAsync().