649 lines
20 KiB
C#
649 lines
20 KiB
C#
using System;
|
|
using System.Text;
|
|
using System.Threading;
|
|
using BestHTTP.Decompression.Zlib;
|
|
using BestHTTP.Extensions;
|
|
using BestHTTP.Logger;
|
|
using BestHTTP.WebSocket.Extensions;
|
|
using BestHTTP.WebSocket.Frames;
|
|
using Cpp2IlInjected;
|
|
|
|
namespace BestHTTP.WebSocket
|
|
{
|
|
// Token: 0x020019A9 RID: 6569
|
|
[Token(Token = "0x20019A9")]
|
|
public sealed class WebSocket
|
|
{
|
|
// Token: 0x17001847 RID: 6215
|
|
// (get) Token: 0x060098D2 RID: 39122 RVA: 0x001F318C File Offset: 0x001F138C
|
|
// (set) Token: 0x060098D3 RID: 39123 RVA: 0x001F31A0 File Offset: 0x001F13A0
|
|
[Token(Token = "0x17001847")]
|
|
public WebSocketStates State
|
|
{
|
|
[Token(Token = "0x60098D2")]
|
|
[Address(RVA = "0x4944B0", Offset = "0x4934B0", VA = "0x1804944B0")]
|
|
get;
|
|
[Token(Token = "0x60098D3")]
|
|
[Address(RVA = "0x62ADC0", Offset = "0x629DC0", VA = "0x18062ADC0")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x17001848 RID: 6216
|
|
// (get) Token: 0x060098D4 RID: 39124 RVA: 0x001F31B4 File Offset: 0x001F13B4
|
|
[Token(Token = "0x17001848")]
|
|
public bool IsOpen
|
|
{
|
|
[Token(Token = "0x60098D4")]
|
|
[Address(RVA = "0x63B820", Offset = "0x63A820", VA = "0x18063B820")]
|
|
get
|
|
{
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
if (webSocketResponse == 0)
|
|
{
|
|
}
|
|
return !webSocketResponse.closed;
|
|
}
|
|
}
|
|
|
|
// Token: 0x17001849 RID: 6217
|
|
// (get) Token: 0x060098D5 RID: 39125 RVA: 0x001F31D8 File Offset: 0x001F13D8
|
|
[Token(Token = "0x17001849")]
|
|
public int BufferedAmount
|
|
{
|
|
[Token(Token = "0x60098D5")]
|
|
[Address(RVA = "0x63B800", Offset = "0x63A800", VA = "0x18063B800")]
|
|
get
|
|
{
|
|
return this.webSocket._bufferedAmount;
|
|
}
|
|
}
|
|
|
|
// Token: 0x1700184A RID: 6218
|
|
// (get) Token: 0x060098D6 RID: 39126 RVA: 0x001F31F8 File Offset: 0x001F13F8
|
|
// (set) Token: 0x060098D7 RID: 39127 RVA: 0x001F320C File Offset: 0x001F140C
|
|
[Token(Token = "0x1700184A")]
|
|
public bool StartPingThread
|
|
{
|
|
[Token(Token = "0x60098D6")]
|
|
[Address(RVA = "0x498E20", Offset = "0x497E20", VA = "0x180498E20")]
|
|
get;
|
|
[Token(Token = "0x60098D7")]
|
|
[Address(RVA = "0x62FA00", Offset = "0x62EA00", VA = "0x18062FA00")]
|
|
set;
|
|
}
|
|
|
|
// Token: 0x1700184B RID: 6219
|
|
// (get) Token: 0x060098D8 RID: 39128 RVA: 0x001F3220 File Offset: 0x001F1420
|
|
// (set) Token: 0x060098D9 RID: 39129 RVA: 0x001F3234 File Offset: 0x001F1434
|
|
[Token(Token = "0x1700184B")]
|
|
public int PingFrequency
|
|
{
|
|
[Token(Token = "0x60098D8")]
|
|
[Address(RVA = "0x4936D0", Offset = "0x4926D0", VA = "0x1804936D0")]
|
|
get;
|
|
[Token(Token = "0x60098D9")]
|
|
[Address(RVA = "0x5F1920", Offset = "0x5F0920", VA = "0x1805F1920")]
|
|
set;
|
|
}
|
|
|
|
// Token: 0x1700184C RID: 6220
|
|
// (get) Token: 0x060098DA RID: 39130 RVA: 0x001F3248 File Offset: 0x001F1448
|
|
// (set) Token: 0x060098DB RID: 39131 RVA: 0x001F325C File Offset: 0x001F145C
|
|
[Token(Token = "0x1700184C")]
|
|
public TimeSpan CloseAfterNoMesssage
|
|
{
|
|
[Token(Token = "0x60098DA")]
|
|
[Address(RVA = "0x4157B0", Offset = "0x4147B0", VA = "0x1804157B0")]
|
|
get;
|
|
[Token(Token = "0x60098DB")]
|
|
[Address(RVA = "0x4157F0", Offset = "0x4147F0", VA = "0x1804157F0")]
|
|
set;
|
|
}
|
|
|
|
// Token: 0x1700184D RID: 6221
|
|
// (get) Token: 0x060098DC RID: 39132 RVA: 0x001F3270 File Offset: 0x001F1470
|
|
// (set) Token: 0x060098DD RID: 39133 RVA: 0x001F3284 File Offset: 0x001F1484
|
|
[Token(Token = "0x1700184D")]
|
|
public HTTPRequest InternalRequest
|
|
{
|
|
[Token(Token = "0x60098DC")]
|
|
[Address(RVA = "0x4157C0", Offset = "0x4147C0", VA = "0x1804157C0")]
|
|
get;
|
|
[Token(Token = "0x60098DD")]
|
|
[Address(RVA = "0x415810", Offset = "0x414810", VA = "0x180415810")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x1700184E RID: 6222
|
|
// (get) Token: 0x060098DE RID: 39134 RVA: 0x001F3298 File Offset: 0x001F1498
|
|
// (set) Token: 0x060098DF RID: 39135 RVA: 0x001F32AC File Offset: 0x001F14AC
|
|
[Token(Token = "0x1700184E")]
|
|
public IExtension[] Extensions
|
|
{
|
|
[Token(Token = "0x60098DE")]
|
|
[Address(RVA = "0x4157D0", Offset = "0x4147D0", VA = "0x1804157D0")]
|
|
get;
|
|
[Token(Token = "0x60098DF")]
|
|
[Address(RVA = "0x415820", Offset = "0x414820", VA = "0x180415820")]
|
|
private set;
|
|
}
|
|
|
|
// Token: 0x1700184F RID: 6223
|
|
// (get) Token: 0x060098E0 RID: 39136 RVA: 0x001F32C0 File Offset: 0x001F14C0
|
|
[Token(Token = "0x1700184F")]
|
|
public int Latency
|
|
{
|
|
[Token(Token = "0x60098E0")]
|
|
[Address(RVA = "0x63B860", Offset = "0x63A860", VA = "0x18063B860")]
|
|
get
|
|
{
|
|
return this.webSocket.<Latency>k__BackingField;
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E1 RID: 39137 RVA: 0x001F32E0 File Offset: 0x001F14E0
|
|
[Token(Token = "0x60098E1")]
|
|
[Address(RVA = "0x63AD80", Offset = "0x639D80", VA = "0x18063AD80")]
|
|
public WebSocket(Uri uri)
|
|
{
|
|
string empty = string.Empty;
|
|
IExtension[] array = new IExtension[1];
|
|
int num = 0;
|
|
PerMessageCompression perMessageCompression;
|
|
perMessageCompression.FieldGetter(num, empty, empty);
|
|
perMessageCompression.<Level>k__BackingField = (CompressionLevel)((ulong)6L);
|
|
perMessageCompression.<ClientNoContextTakeover>k__BackingField = false;
|
|
perMessageCompression.<ClientMaxWindowBits>k__BackingField = (int)((ulong)15L);
|
|
perMessageCompression.<ServerMaxWindowBits>k__BackingField = (int)((ulong)15L);
|
|
perMessageCompression.<MinimumDataLegthToCompress>k__BackingField = (int)((ulong)256L);
|
|
array[0] = perMessageCompression;
|
|
this.Extensions = array;
|
|
}
|
|
|
|
// Token: 0x060098E2 RID: 39138 RVA: 0x001F3350 File Offset: 0x001F1550
|
|
[Token(Token = "0x60098E2")]
|
|
[Address(RVA = "0x63AF30", Offset = "0x639F30", VA = "0x18063AF30")]
|
|
public WebSocket(Uri uri, string origin, string protocol, params IExtension[] extensions)
|
|
{
|
|
int num = 0;
|
|
base.FieldGetter(num, origin, protocol);
|
|
bool flag = HTTPProtocolFactory.IsSecureProtocol(uri);
|
|
string text = "ws";
|
|
if (flag)
|
|
{
|
|
text = "wss";
|
|
}
|
|
if (uri.Port != -1)
|
|
{
|
|
int port = uri.Port;
|
|
}
|
|
bool flag2 = text.Equals("wss", StringComparison.OrdinalIgnoreCase);
|
|
object[] array = new object[6];
|
|
if (text != 0)
|
|
{
|
|
}
|
|
array[0] = text;
|
|
if ("://" != 0)
|
|
{
|
|
}
|
|
array[1] = "://";
|
|
string host = uri.Host;
|
|
if (host != 0)
|
|
{
|
|
}
|
|
array[2] = host;
|
|
if (":" != 0)
|
|
{
|
|
}
|
|
array[3] = ":";
|
|
int num2;
|
|
if (num2 != 0)
|
|
{
|
|
}
|
|
array[4] = num2;
|
|
string requestPathAndQueryURL = uri.GetRequestPathAndQueryURL();
|
|
if (requestPathAndQueryURL != 0)
|
|
{
|
|
}
|
|
array[5] = requestPathAndQueryURL;
|
|
Uri uri2 = new Uri(string.Concat(array));
|
|
this.PingFrequency = (int)((ulong)1000L);
|
|
TimeSpan timeSpan;
|
|
this.CloseAfterNoMesssage = timeSpan;
|
|
OnRequestFinishedDelegate onRequestFinishedDelegate = new OnRequestFinishedDelegate(this.OnInternalRequestCallback);
|
|
HTTPRequest httprequest = new HTTPRequest(uri2, onRequestFinishedDelegate);
|
|
this.InternalRequest = httprequest;
|
|
OnRequestFinishedDelegate onRequestFinishedDelegate2 = new OnRequestFinishedDelegate(this.OnInternalRequestUpgraded);
|
|
httprequest.OnUpgraded = onRequestFinishedDelegate2;
|
|
if (!HTTPProtocolFactory.IsSecureProtocol(uri2) && uri2.Port != 80 && HTTPProtocolFactory.IsSecureProtocol(uri2) && uri2.Port != 443)
|
|
{
|
|
HTTPRequest httprequest2 = this.<InternalRequest>k__BackingField;
|
|
string host2 = uri2.Host;
|
|
int port2 = uri2.Port;
|
|
string text2 = host2 + ":" + port2;
|
|
}
|
|
HTTPRequest httprequest3 = this.<InternalRequest>k__BackingField;
|
|
string host3 = uri2.Host;
|
|
httprequest3.SetHeader("Host", host3);
|
|
this.<InternalRequest>k__BackingField.SetHeader("Upgrade", "websocket");
|
|
this.<InternalRequest>k__BackingField.SetHeader("Connection", "Upgrade");
|
|
HTTPRequest httprequest4 = this.<InternalRequest>k__BackingField;
|
|
object[] array2 = new object[4];
|
|
array2[0] = this;
|
|
HTTPRequest httprequest5 = this.<InternalRequest>k__BackingField;
|
|
if (httprequest5 != 0)
|
|
{
|
|
}
|
|
array2[1] = httprequest5;
|
|
array2[2] = uri2;
|
|
object obj = new object();
|
|
if (obj != 0)
|
|
{
|
|
}
|
|
array2[3] = obj;
|
|
string secKey = this.GetSecKey(array2);
|
|
httprequest4.SetHeader("Sec-WebSocket-Key", secKey);
|
|
if (secKey == 0)
|
|
{
|
|
this.<InternalRequest>k__BackingField.SetHeader("Origin", origin);
|
|
}
|
|
this.<InternalRequest>k__BackingField.SetHeader("Sec-WebSocket-Version", "13");
|
|
if (secKey == 0)
|
|
{
|
|
this.<InternalRequest>k__BackingField.SetHeader("Sec-WebSocket-Protocol", protocol);
|
|
}
|
|
this.<InternalRequest>k__BackingField.SetHeader("Cache-Control", "no-cache");
|
|
this.<InternalRequest>k__BackingField.SetHeader("Pragma", "no-cache");
|
|
HTTPRequest httprequest6 = this.<InternalRequest>k__BackingField;
|
|
this.Extensions = 0;
|
|
httprequest6.DisableCache = true;
|
|
this.<InternalRequest>k__BackingField.<DisableRetry>k__BackingField = true;
|
|
this.<InternalRequest>k__BackingField.<TryToMinimizeTCPLatency>k__BackingField = true;
|
|
Proxy <Proxy>k__BackingField = HTTPManager.<Proxy>k__BackingField;
|
|
if (<Proxy>k__BackingField != 0 && <Proxy>k__BackingField != 0)
|
|
{
|
|
HTTPProxy httpproxy;
|
|
this.<InternalRequest>k__BackingField.<Proxy>k__BackingField = httpproxy;
|
|
}
|
|
HTTPManager.Setup();
|
|
}
|
|
|
|
// Token: 0x060098E3 RID: 39139 RVA: 0x001F3644 File Offset: 0x001F1844
|
|
[Token(Token = "0x60098E3")]
|
|
[Address(RVA = "0x63A100", Offset = "0x639100", VA = "0x18063A100")]
|
|
private void OnInternalRequestCallback(HTTPRequest req, HTTPResponse resp)
|
|
{
|
|
int num = 0;
|
|
HTTPRequestStates httprequestStates = req.<State>k__BackingField;
|
|
if (req != 0)
|
|
{
|
|
if (req != 0 && req != 0 && req != 0 && httprequestStates != HTTPRequestStates.Queued)
|
|
{
|
|
return;
|
|
}
|
|
if (req.<Exception>k__BackingField != 0)
|
|
{
|
|
Exception innerException = req.<Exception>k__BackingField.InnerException;
|
|
string text2;
|
|
string text = "Request Finished with Error! " + text2;
|
|
}
|
|
string empty = string.Empty;
|
|
string text3 = "Request Finished with Error! " + empty;
|
|
}
|
|
if (!resp.IsSuccess)
|
|
{
|
|
int <StatusCode>k__BackingField = resp.<StatusCode>k__BackingField;
|
|
if (<StatusCode>k__BackingField != 101)
|
|
{
|
|
string <Message>k__BackingField = resp.<Message>k__BackingField;
|
|
string dataAsText = resp.DataAsText;
|
|
string text4 = string.Format("Request Finished Successfully, but the server sent an error. Status Code: {0}-{1} Message: {2}", <StatusCode>k__BackingField, <Message>k__BackingField, dataAsText);
|
|
if ((int)this.<State>k__BackingField == num && text4 != 0)
|
|
{
|
|
OnWebSocketClosedDelegate onClosed = this.OnClosed;
|
|
if (onClosed == 0)
|
|
{
|
|
goto IL_112;
|
|
}
|
|
uint num2;
|
|
onClosed(this, (ushort)num2, "Closed while opening");
|
|
}
|
|
OnWebSocketErrorDelegate onError = this.OnError;
|
|
if (onError != 0)
|
|
{
|
|
Exception <Exception>k__BackingField = req.<Exception>k__BackingField;
|
|
onError(this, <Exception>k__BackingField);
|
|
}
|
|
OnWebSocketErrorDescriptionDelegate onErrorDesc = this.OnErrorDesc;
|
|
if (onErrorDesc != 0)
|
|
{
|
|
onErrorDesc(this, text4);
|
|
}
|
|
if (this.OnError == num && this.OnErrorDesc == num)
|
|
{
|
|
ILogger logger = HTTPManager.Logger;
|
|
}
|
|
IL_112:
|
|
if ((req.isKeepAlive ? 1 : 0) != num || resp == 0 || resp != 0)
|
|
{
|
|
return;
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
ILogger logger2 = HTTPManager.Logger;
|
|
string text6;
|
|
string text5 = string.Format("Request finished. Status Code: {0} Message: {1}", text6, resp);
|
|
throw new NullReferenceException();
|
|
}
|
|
|
|
// Token: 0x060098E4 RID: 39140 RVA: 0x001F3794 File Offset: 0x001F1994
|
|
[Token(Token = "0x60098E4")]
|
|
[Address(RVA = "0x63A430", Offset = "0x639430", VA = "0x18063A430")]
|
|
private void OnInternalRequestUpgraded(HTTPRequest req, HTTPResponse resp)
|
|
{
|
|
int num = 0;
|
|
if (resp != 0)
|
|
{
|
|
}
|
|
this.webSocket = num;
|
|
WebSocketResponse webSocketResponse6;
|
|
WaitCallback waitCallback;
|
|
if (num != 0)
|
|
{
|
|
IExtension[] array = this.<Extensions>k__BackingField;
|
|
if (array != 0)
|
|
{
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
if (array[num] != 0 && array == 0)
|
|
{
|
|
this.<Extensions>k__BackingField[0] = num;
|
|
}
|
|
ILogger logger = HTTPManager.Logger;
|
|
IExtension[] array2 = this.<Extensions>k__BackingField;
|
|
int num2 = 0;
|
|
array2[0] = num2;
|
|
num++;
|
|
}
|
|
}
|
|
this.<State>k__BackingField = (WebSocketStates)((ulong)1L);
|
|
if (this.OnOpen != (ulong)0L)
|
|
{
|
|
this.OnOpen(this);
|
|
ILogger logger2 = HTTPManager.Logger;
|
|
}
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
Action<WebSocketResponse, string> action = delegate(WebSocketResponse ws, string msg)
|
|
{
|
|
OnWebSocketMessageDelegate onMessage = this.OnMessage;
|
|
if (onMessage != 0)
|
|
{
|
|
onMessage(this, msg);
|
|
return;
|
|
}
|
|
};
|
|
webSocketResponse.OnText = action;
|
|
WebSocketResponse webSocketResponse2 = this.webSocket;
|
|
Action<WebSocketResponse, byte[]> action2 = delegate(WebSocketResponse ws, byte[] bin)
|
|
{
|
|
OnWebSocketBinaryDelegate onBinary = this.OnBinary;
|
|
if (onBinary != 0)
|
|
{
|
|
onBinary(this, bin);
|
|
return;
|
|
}
|
|
};
|
|
webSocketResponse2.OnBinary = action2;
|
|
WebSocketResponse webSocketResponse3 = this.webSocket;
|
|
Action<WebSocketResponse, ushort, string> action3 = delegate(WebSocketResponse ws, ushort code, string msg)
|
|
{
|
|
OnWebSocketClosedDelegate onClosed = this.OnClosed;
|
|
this.<State>k__BackingField = (WebSocketStates)((ulong)3L);
|
|
if (onClosed != 0)
|
|
{
|
|
onClosed(this, code, msg);
|
|
return;
|
|
}
|
|
};
|
|
webSocketResponse3.OnClosed = action3;
|
|
if (this.OnIncompleteFrame != (ulong)0L)
|
|
{
|
|
WebSocketResponse webSocketResponse4 = this.webSocket;
|
|
Action<WebSocketResponse, WebSocketFrameReader> action4 = delegate(WebSocketResponse ws, WebSocketFrameReader frame)
|
|
{
|
|
if (this.OnIncompleteFrame != 0)
|
|
{
|
|
byte[] <Data>k__BackingField = frame.<Data>k__BackingField;
|
|
}
|
|
};
|
|
webSocketResponse4.OnIncompleteFrame = action4;
|
|
}
|
|
if (this.<StartPingThread>k__BackingField)
|
|
{
|
|
WebSocketResponse webSocketResponse5 = this.webSocket;
|
|
int num3 = Math.Max(this.<PingFrequency>k__BackingField, 100);
|
|
webSocketResponse5.StartPinging(num3);
|
|
}
|
|
webSocketResponse6 = this.webSocket;
|
|
waitCallback = new WaitCallback(webSocketResponse6.ReceiveThreadFunc);
|
|
bool flag = ThreadPool.QueueUserWorkItem(waitCallback);
|
|
return;
|
|
}
|
|
if (waitCallback.original_method_info != 0)
|
|
{
|
|
}
|
|
if (waitCallback.data != 0 && webSocketResponse6.Stream != 0)
|
|
{
|
|
bool canRead = webSocketResponse6.Stream.CanRead;
|
|
DelegateData data = waitCallback.data;
|
|
}
|
|
waitCallback.method_ptr = (IntPtr)((ulong)3L);
|
|
}
|
|
|
|
// Token: 0x060098E5 RID: 39141 RVA: 0x001F394C File Offset: 0x001F1B4C
|
|
[Token(Token = "0x60098E5")]
|
|
[Address(RVA = "0x63A9A0", Offset = "0x6399A0", VA = "0x18063A9A0")]
|
|
public void Open()
|
|
{
|
|
if (!this.requestSent)
|
|
{
|
|
if (this.<Extensions>k__BackingField != (ulong)0L)
|
|
{
|
|
int num = 0;
|
|
IExtension[] array = this.<Extensions>k__BackingField;
|
|
int length = array.Length;
|
|
if (num < length)
|
|
{
|
|
if (array[num] != 0)
|
|
{
|
|
}
|
|
num++;
|
|
}
|
|
ILogger logger = HTTPManager.Logger;
|
|
}
|
|
HTTPRequest httprequest = this.<InternalRequest>k__BackingField.Send();
|
|
this.requestSent = true;
|
|
this.<State>k__BackingField = (WebSocketStates)((ulong)0L);
|
|
return;
|
|
}
|
|
InvalidOperationException ex = new InvalidOperationException("Open already called! You can't reuse this WebSocket instance!");
|
|
throw new IndexOutOfRangeException();
|
|
}
|
|
|
|
// Token: 0x060098E6 RID: 39142 RVA: 0x001F39DC File Offset: 0x001F1BDC
|
|
[Token(Token = "0x60098E6")]
|
|
[Address(RVA = "0x63AB30", Offset = "0x639B30", VA = "0x18063AB30")]
|
|
public void Send(string message)
|
|
{
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
if (webSocketResponse != 0 && !webSocketResponse.closed)
|
|
{
|
|
this.webSocket.Send(message);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E7 RID: 39143 RVA: 0x001F3A10 File Offset: 0x001F1C10
|
|
[Token(Token = "0x60098E7")]
|
|
[Address(RVA = "0x63AC70", Offset = "0x639C70", VA = "0x18063AC70")]
|
|
public void Send(byte[] buffer)
|
|
{
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
if (webSocketResponse != 0 && !webSocketResponse.closed)
|
|
{
|
|
this.webSocket.Send(buffer);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E8 RID: 39144 RVA: 0x001F3A44 File Offset: 0x001F1C44
|
|
[Token(Token = "0x60098E8")]
|
|
[Address(RVA = "0x63AB90", Offset = "0x639B90", VA = "0x18063AB90")]
|
|
public void Send(byte[] buffer, ulong offset, ulong count)
|
|
{
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
if (webSocketResponse != 0 && !webSocketResponse.closed)
|
|
{
|
|
this.webSocket.Send(buffer, offset, count);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098E9 RID: 39145 RVA: 0x001F3A7C File Offset: 0x001F1C7C
|
|
[Token(Token = "0x60098E9")]
|
|
[Address(RVA = "0x63AC10", Offset = "0x639C10", VA = "0x18063AC10")]
|
|
public void Send(WebSocketFrame frame)
|
|
{
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
if (webSocketResponse != 0 && !webSocketResponse.closed)
|
|
{
|
|
this.webSocket.Send(frame);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098EA RID: 39146 RVA: 0x001F3AB0 File Offset: 0x001F1CB0
|
|
[Token(Token = "0x60098EA")]
|
|
[Address(RVA = "0x639C40", Offset = "0x638C40", VA = "0x180639C40")]
|
|
public void Close()
|
|
{
|
|
WebSocketStates webSocketStates = this.<State>k__BackingField;
|
|
this.<State>k__BackingField = (WebSocketStates)((ulong)2L);
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
}
|
|
|
|
// Token: 0x060098EB RID: 39147 RVA: 0x001F3AF8 File Offset: 0x001F1CF8
|
|
[Token(Token = "0x60098EB")]
|
|
[Address(RVA = "0x639D00", Offset = "0x638D00", VA = "0x180639D00")]
|
|
public void Close(ushort code, string message)
|
|
{
|
|
WebSocketResponse webSocketResponse = this.webSocket;
|
|
if (webSocketResponse != 0 && !webSocketResponse.closed)
|
|
{
|
|
this.webSocket.Close(code, message);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060098EC RID: 39148 RVA: 0x001F3B2C File Offset: 0x001F1D2C
|
|
[Token(Token = "0x60098EC")]
|
|
[Address(RVA = "0x639D70", Offset = "0x638D70", VA = "0x180639D70")]
|
|
public static byte[] EncodeCloseData(ushort code, string message)
|
|
{
|
|
int num;
|
|
byte[] array;
|
|
do
|
|
{
|
|
num = 0;
|
|
object obj = Encoding.UTF8.Clone();
|
|
byte[] bytes = BitConverter.GetBytes(code);
|
|
int length = bytes.Length;
|
|
int num2 = 0;
|
|
Array.Reverse(bytes, num2, length);
|
|
BufferPoolMemoryStream bufferPoolMemoryStream;
|
|
int num3 = bufferPoolMemoryStream.ReadByte();
|
|
Encoding utf = Encoding.UTF8;
|
|
int num4 = bufferPoolMemoryStream.ReadByte();
|
|
array = bufferPoolMemoryStream.ToArray();
|
|
if (bufferPoolMemoryStream != 0)
|
|
{
|
|
}
|
|
}
|
|
while (num != 0);
|
|
return array;
|
|
}
|
|
|
|
// Token: 0x060098ED RID: 39149 RVA: 0x001F3BB8 File Offset: 0x001F1DB8
|
|
[Token(Token = "0x60098ED")]
|
|
[Address(RVA = "0x639F80", Offset = "0x638F80", VA = "0x180639F80")]
|
|
private string GetSecKey(object[] from)
|
|
{
|
|
byte[] array = new byte[16];
|
|
int num = 0;
|
|
int num2 = 0;
|
|
int num3 = 0;
|
|
int length = from.Length;
|
|
if (num < length)
|
|
{
|
|
from[num3].Finalize();
|
|
int num4 = 0;
|
|
byte[] array2;
|
|
int length2 = array2.Length;
|
|
if (num4 < length2)
|
|
{
|
|
int length3 = array.Length;
|
|
if (num2 < length3)
|
|
{
|
|
num2++;
|
|
num4++;
|
|
}
|
|
}
|
|
num3++;
|
|
}
|
|
return Convert.ToBase64String(array);
|
|
}
|
|
|
|
// Token: 0x04006760 RID: 26464
|
|
[FieldOffset(Offset = "0x30")]
|
|
[Token(Token = "0x4006760")]
|
|
public OnWebSocketOpenDelegate OnOpen;
|
|
|
|
// Token: 0x04006761 RID: 26465
|
|
[FieldOffset(Offset = "0x38")]
|
|
[Token(Token = "0x4006761")]
|
|
public OnWebSocketMessageDelegate OnMessage;
|
|
|
|
// Token: 0x04006762 RID: 26466
|
|
[FieldOffset(Offset = "0x40")]
|
|
[Token(Token = "0x4006762")]
|
|
public OnWebSocketBinaryDelegate OnBinary;
|
|
|
|
// Token: 0x04006763 RID: 26467
|
|
[FieldOffset(Offset = "0x48")]
|
|
[Token(Token = "0x4006763")]
|
|
public OnWebSocketClosedDelegate OnClosed;
|
|
|
|
// Token: 0x04006764 RID: 26468
|
|
[FieldOffset(Offset = "0x50")]
|
|
[Token(Token = "0x4006764")]
|
|
public OnWebSocketErrorDelegate OnError;
|
|
|
|
// Token: 0x04006765 RID: 26469
|
|
[FieldOffset(Offset = "0x58")]
|
|
[Token(Token = "0x4006765")]
|
|
public OnWebSocketErrorDescriptionDelegate OnErrorDesc;
|
|
|
|
// Token: 0x04006766 RID: 26470
|
|
[FieldOffset(Offset = "0x60")]
|
|
[Token(Token = "0x4006766")]
|
|
public OnWebSocketIncompleteFrameDelegate OnIncompleteFrame;
|
|
|
|
// Token: 0x04006767 RID: 26471
|
|
[FieldOffset(Offset = "0x68")]
|
|
[Token(Token = "0x4006767")]
|
|
private bool requestSent;
|
|
|
|
// Token: 0x04006768 RID: 26472
|
|
[FieldOffset(Offset = "0x70")]
|
|
[Token(Token = "0x4006768")]
|
|
private WebSocketResponse webSocket;
|
|
}
|
|
}
|