Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mcs
diff options
context:
space:
mode:
authorKenneth Pouncey <kjpou@pt.lu>2019-12-09 15:32:17 +0300
committerAlexander Köplinger <alex.koeplinger@outlook.com>2019-12-09 15:32:17 +0300
commit1462208991862fa795d36ec5df52eab938a4242e (patch)
tree0d6bb5b621bcb0936c0971c54a18489eec2d46b1 /mcs
parented6b8024b0eb933d78ecc2e54bc8a798f868cf7e (diff)
[wasm][bcl][websockets] Add WebSocket support. (#18062)
Add the ability to initialize a `WebAssembly.Net.WebSockets::ClientWebSocket` from `System.Net.WebSockets.ClientWebSocket`. `System.Net.WebSockets.ClientWebSocket` will delegate all calls to the WebAssembly ClientWebSocket. - Add support for marshaling `Uri` class correctly. This was a cause of failures. - Add bindings tests for `Uri` marhaling.
Diffstat (limited to 'mcs')
-rw-r--r--mcs/class/System/Assembly/AssemblyInfo.cs4
-rw-r--r--mcs/class/System/Makefile4
-rw-r--r--mcs/class/System/System.Net.WebSockets/WebSocketHandle.wasm.cs108
-rw-r--r--mcs/class/System/System.csproj22
-rw-r--r--mcs/class/System/wasm_System.dll.exclude.sources1
-rw-r--r--mcs/class/System/wasm_System.dll.sources3
6 files changed, 140 insertions, 2 deletions
diff --git a/mcs/class/System/Assembly/AssemblyInfo.cs b/mcs/class/System/Assembly/AssemblyInfo.cs
index bfe1e6a7b90..15e072796c7 100644
--- a/mcs/class/System/Assembly/AssemblyInfo.cs
+++ b/mcs/class/System/Assembly/AssemblyInfo.cs
@@ -90,6 +90,10 @@ using System.Runtime.InteropServices;
[assembly: InternalsVisibleTo ("Mono.Android, PublicKey=0024000004800000940000000602000000240000525341310004000011000000438ac2a5acfbf16cbd2b2b47a62762f273df9cb2795ceccdf77d10bf508e69e7a362ea7a45455bbf3ac955e1f2e2814f144e5d817efc4c6502cc012df310783348304e3ae38573c6d658c234025821fda87a0be8a0d504df564e2c93b2b878925f42503e9d54dfef9f9586d9e6f38a305769587b1de01f6c0410328b2c9733db")]
#endif
+#if WASM
+[assembly: InternalsVisibleTo ("WebAssembly.Net.WebSockets, PublicKey=00240000048000009400000006020000002400005253413100040000010001004b86c4cb78549b34bab61a3b1800e23bfeb5b3ec390074041536a7e3cbd97f5f04cf0f857155a8928eaa29ebfd11cfbbad3ba70efea7bda3226c6a8d370a4cd303f714486b6ebc225985a638471e6ef571cc92a4613c00b8fa65d61ccee0cbe5f36330c9a01f4183559f1bef24cc2917c6d913e3a541333a1d05d9bed22b38cb")]
+#endif
+
[assembly: TypeForwardedTo (typeof (System.Collections.Generic.Stack<>))]
[assembly: TypeForwardedTo (typeof (System.Collections.Generic.Queue<>))]
[assembly: TypeForwardedTo (typeof (System.IO.Enumeration.FileSystemName))]
diff --git a/mcs/class/System/Makefile b/mcs/class/System/Makefile
index f3252e4cc32..ed30dfc6fcb 100644
--- a/mcs/class/System/Makefile
+++ b/mcs/class/System/Makefile
@@ -116,6 +116,10 @@ API_BIN_REFS += System.Configuration
LIB_MCS_FLAGS += -d:CONFIGURATION_DEP
endif
+ifeq (wasm,$(PROFILE))
+API_BIN_REFS += WebAssembly.Net.WebSockets
+endif
+
EXTRA_DISTFILES = \
Test/test-config-file \
Test/System.Security.Cryptography.X509Certificates/pkits/Makefile \
diff --git a/mcs/class/System/System.Net.WebSockets/WebSocketHandle.wasm.cs b/mcs/class/System/System.Net.WebSockets/WebSocketHandle.wasm.cs
new file mode 100644
index 00000000000..5219654c97c
--- /dev/null
+++ b/mcs/class/System/System.Net.WebSockets/WebSocketHandle.wasm.cs
@@ -0,0 +1,108 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Net.Security;
+using System.Net.Sockets;
+using System.Runtime.ExceptionServices;
+using System.Security.Cryptography;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace System.Net.WebSockets
+{
+ internal sealed class WebSocketHandle
+ {
+ private WebSocketState _state = WebSocketState.Connecting;
+ private WebAssembly.Net.WebSockets.ClientWebSocket _webSocket;
+
+ public static WebSocketHandle Create() => new WebSocketHandle();
+
+ public static bool IsValid(WebSocketHandle handle) => handle != null;
+
+ public WebSocketCloseStatus? CloseStatus => _webSocket?.CloseStatus;
+
+ public string CloseStatusDescription => _webSocket?.CloseStatusDescription;
+
+ public WebSocketState State => _webSocket?.State ?? _state;
+
+ public string SubProtocol => _webSocket?.SubProtocol;
+
+ public static void CheckPlatformSupport() { /* nop */ }
+
+ public void Dispose()
+ {
+ _state = WebSocketState.Closed;
+ _webSocket?.Dispose();
+ }
+
+ public void Abort()
+ {
+ _webSocket?.Abort();
+ }
+
+ public Task SendAsync(ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken) =>
+ _webSocket.SendAsync(buffer, messageType, endOfMessage, cancellationToken);
+
+ public ValueTask SendAsync(ReadOnlyMemory<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken) =>
+ _webSocket.SendAsync(buffer, messageType, endOfMessage, cancellationToken);
+
+ public Task<WebSocketReceiveResult> ReceiveAsync(ArraySegment<byte> buffer, CancellationToken cancellationToken) =>
+ _webSocket.ReceiveAsync(buffer, cancellationToken);
+
+ public ValueTask<ValueWebSocketReceiveResult> ReceiveAsync(Memory<byte> buffer, CancellationToken cancellationToken) =>
+ _webSocket.ReceiveAsync(buffer, cancellationToken);
+
+ public Task CloseAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) =>
+ _webSocket.CloseAsync(closeStatus, statusDescription, cancellationToken);
+
+ public Task CloseOutputAsync(WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken) =>
+ _webSocket.CloseOutputAsync(closeStatus, statusDescription, cancellationToken);
+
+ public async Task ConnectAsyncCore(Uri uri, CancellationToken cancellationToken, ClientWebSocketOptions options)
+ {
+ // TODO #14480 : Not currently implemented, or explicitly ignored:
+ // - ClientWebSocketOptions.UseDefaultCredentials
+ // - ClientWebSocketOptions.Credentials
+ // - ClientWebSocketOptions.Proxy
+ // - ClientWebSocketOptions._sendBufferSize
+ // throw new PlatformNotSupportedException ();
+ // Establish connection to the server
+ CancellationTokenRegistration registration = cancellationToken.Register(s => ((WebSocketHandle)s).Abort(), this);
+ try
+ {
+ _webSocket = new WebAssembly.Net.WebSockets.ClientWebSocket ();//(options);
+ foreach (var t in options.RequestedSubProtocols) {
+ _webSocket.Options.AddSubProtocol (t);
+ }
+
+ await _webSocket.ConnectAsync (uri, cancellationToken);
+
+ }
+ catch (Exception exc)
+ {
+ if (_state < WebSocketState.Closed)
+ {
+ _state = WebSocketState.Closed;
+ }
+
+ Abort();
+
+ if (exc is WebSocketException)
+ {
+ throw;
+ }
+ throw new WebSocketException(SR.net_webstatus_ConnectFailure, exc);
+ }
+ finally
+ {
+ registration.Dispose();
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/mcs/class/System/System.csproj b/mcs/class/System/System.csproj
index 935e1d5d0c5..011086d348a 100644
--- a/mcs/class/System/System.csproj
+++ b/mcs/class/System/System.csproj
@@ -461,7 +461,6 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.WebClient\src\System\Net\WebClient.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\ClientWebSocket.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\ClientWebSocketOptions.cs" />
- <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.WebSocketProtocol\src\System\Net\WebSockets\ManagedWebSocket.netstandard.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets\src\System\Net\WebSockets\ValueWebSocketReceiveResult.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets\src\System\Net\WebSockets\WebSocket.cs" />
@@ -1059,6 +1058,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -1218,6 +1218,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPClient.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPListener.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\UDPClient.cs" />
@@ -1363,6 +1364,7 @@
<Compile Include="System.Net.NetworkInformation\UnixTcpStatistics.cs" />
<Compile Include="System.Net.NetworkInformation\UnixUdpStatistics.cs" />
<Compile Include="System.Net.Security\SslStream.cs" />
+ <Compile Include="System.Net.WebSockets\WebSocketHandle.wasm.cs" />
<Compile Include="System.Net\AuthenticationManager.cs" />
<Compile Include="System.Net\BufferedReadStream.cs" />
<Compile Include="System.Net\ChunkedInputStream.cs" />
@@ -1439,6 +1441,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -1568,6 +1571,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPClient.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPListener.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\UDPClient.cs" />
@@ -1834,6 +1838,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Security.Cryptography.Encoding\src\Internal\Cryptography\OidLookup.Windows.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
@@ -2307,6 +2312,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -2805,6 +2811,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -3321,6 +3328,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -3682,6 +3690,7 @@
<Compile Include="..\..\..\external\corefx\src\Common\src\System\Net\Security\Unix\SafeFreeNegoCredentials.cs" />
<Compile Include="..\..\..\external\corefx\src\System.IO.FileSystem.Watcher\src\System\IO\FileSystemWatcher.UnknownUnix.cs" />
<Compile Include="..\..\..\external\corefx\src\System.IO.FileSystem.Watcher\src\System\IO\FileSystemWatcher.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />
<Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\AuthorityKeyIdentifierExtension.cs" />
<Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />
@@ -3801,6 +3810,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPClient.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPListener.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\UDPClient.cs" />
@@ -3939,6 +3949,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPClient.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\TCPListener.cs" />
<Compile Include="..\referencesource\System\net\System\Net\Sockets\UDPClient.cs" />
@@ -4104,6 +4115,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Security.Cryptography.Encoding\src\Internal\Cryptography\OidLookup.Windows.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
@@ -4224,6 +4236,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -4366,6 +4379,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -4508,6 +4522,7 @@
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslClientAuthenticationOptions.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Net.Security\src\System\Net\Security\SslServerAuthenticationOptions.cs" />
+ <Compile Include="..\..\..\external\corefx\src\System.Net.WebSockets.Client\src\System\Net\WebSockets\WebSocketHandle.Managed.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunner.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\CompiledRegexRunnerFactory.cs" />
<Compile Include="..\..\..\external\corefx\src\System.Text.RegularExpressions\src\System\Text\RegularExpressions\RegexCompiler.cs" />
@@ -5078,6 +5093,11 @@
<HintPath>./../../../external/binary-reference-assemblies/build/monowasm/System.Numerics.dll</HintPath>
<Private>False</Private>
</Reference>
+ <Reference Include="./../../../external/binary-reference-assemblies/build/monowasm/WebAssembly.Net.WebSockets.dll">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>./../../../external/binary-reference-assemblies/build/monowasm/WebAssembly.Net.WebSockets.dll</HintPath>
+ <Private>False</Private>
+ </Reference>
<ProjectReference Include="../Mono.Security/Mono.Security.csproj">
<Aliases>MonoSecurity</Aliases>
</ProjectReference>
diff --git a/mcs/class/System/wasm_System.dll.exclude.sources b/mcs/class/System/wasm_System.dll.exclude.sources
index a6a19c8bc99..adb10a980de 100644
--- a/mcs/class/System/wasm_System.dll.exclude.sources
+++ b/mcs/class/System/wasm_System.dll.exclude.sources
@@ -1,3 +1,4 @@
System.IO/FileSystemWatcher.cs
../../../external/corefx/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.UnknownUnix.cs
../../../external/corefx/src/System.IO.FileSystem.Watcher/src/System/IO/FileSystemWatcher.cs
+../../../external/corefx/src/System.Net.WebSockets.Client/src/System/Net/WebSockets/WebSocketHandle.Managed.cs \ No newline at end of file
diff --git a/mcs/class/System/wasm_System.dll.sources b/mcs/class/System/wasm_System.dll.sources
index a6748349a0b..b5ce06f0169 100644
--- a/mcs/class/System/wasm_System.dll.sources
+++ b/mcs/class/System/wasm_System.dll.sources
@@ -1,2 +1,3 @@
#include mobile_System.dll.sources
-#include fsw.pns.sources \ No newline at end of file
+#include fsw.pns.sources
+System.Net.WebSockets/WebSocketHandle.wasm.cs