From 1fbb940b3f4b1c4406584dce9255bd1a0c3f4bb5 Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Wed, 13 Jul 2022 15:43:34 +0800 Subject: [PATCH 1/9] fix:Unity WebGL throws Error: "ReferenceError: Runtime is not defined" It seams that in unity 2021.2 variable Runtime doesn't exist and can be replaced with Module['dynCall_*']. In webSocket.jslib change all Runtime.dynCall('*1', *2, [*3, *4]) for Module['dynCall_*1'](*2, *3, *4) --- .../Runtime/JSWebSocketClient.jslib | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/JSWebSocketClient.jslib b/Transports/com.community.netcode.transport.websocket/Runtime/JSWebSocketClient.jslib index 252d0c7c..a734cd18 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/JSWebSocketClient.jslib +++ b/Transports/com.community.netcode.transport.websocket/Runtime/JSWebSocketClient.jslib @@ -39,7 +39,7 @@ var LibraryWebSocket = { } if (state.onOpen) { - Runtime.dynCall('v', state.onOpen, []); + Module['dynCall_v'](state.onOpen); } }; @@ -59,7 +59,7 @@ var LibraryWebSocket = { HEAPU8.set(dataBuffer, buffer); try { - Runtime.dynCall('vii', state.onMessage, [buffer, dataBuffer.length]); + Module['dynCall_vii'](state.onMessage, buffer, dataBuffer.length); } finally { _free(buffer); } @@ -78,7 +78,7 @@ var LibraryWebSocket = { stringToUTF8(msg, msgBuffer, msgBytes); try { - Runtime.dynCall('vi', state.onError, [msgBuffer]); + Module['dynCall_vi'](state.onError, msgBuffer) } finally { _free(msgBuffer); } @@ -91,7 +91,7 @@ var LibraryWebSocket = { } if (state.onClose) { - Runtime.dynCall('vi', state.onClose, [ev.code]); + Module['dynCall_vi'](state.onClose, ev.code) } }; }, From 161af438992da1e34222a719128adad5898d93cb Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 00:11:52 -0800 Subject: [PATCH 2/9] Updated web socket transport to not use static fields --- .../Runtime/WebSocketTransport.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs index da496fba..043dbae1 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs @@ -8,9 +8,9 @@ namespace Netcode.Transports.WebSocket { public class WebSocketTransport : NetworkTransport { - private static WebSocketServer WebSocketServer = null; - private static IWebSocketClient WebSocketClient = null; - private static bool IsStarted = false; + private WebSocketServer WebSocketServer = null; + private IWebSocketClient WebSocketClient = null; + private bool IsStarted = false; [Header("Transport")] public string ConnectAddress = "127.0.0.1"; From fe7deda21c1d6aa7d342780be16d05a3e3744025 Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 00:32:57 -0800 Subject: [PATCH 3/9] Reset started value on disconnect --- .../Runtime/WebSocketTransport.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs index 043dbae1..db7bd070 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs @@ -23,11 +23,13 @@ public class WebSocketTransport : NetworkTransport public override void DisconnectLocalClient() { + IsStarted = false; WebSocketClient.Close(); } public override void DisconnectRemoteClient(ulong clientId) { + IsStarted = false; WebSocketServerConnectionBehavior.DisconnectClient(clientId); } From 9c1c2aa658af0cc80267dfef33c484f758819df4 Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 00:50:17 -0800 Subject: [PATCH 4/9] Fixed the flag for is started on shutdown --- .../Runtime/WebSocketTransport.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs index db7bd070..27e4c71d 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs @@ -23,13 +23,11 @@ public class WebSocketTransport : NetworkTransport public override void DisconnectLocalClient() { - IsStarted = false; WebSocketClient.Close(); } public override void DisconnectRemoteClient(ulong clientId) { - IsStarted = false; WebSocketServerConnectionBehavior.DisconnectClient(clientId); } @@ -95,6 +93,7 @@ public override void Send(ulong clientId, ArraySegment data, NetworkDelive public override void Shutdown() { + IsStarted = false; if (WebSocketClient != null) { WebSocketClient.Close(); From 39eed602ea5a830230e62bc18249f2a65c2803ff Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 00:52:42 -0800 Subject: [PATCH 5/9] Reset web socket client on shutdown --- .../Runtime/WebSocketTransport.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs index 27e4c71d..fe87cc23 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs @@ -97,6 +97,7 @@ public override void Shutdown() if (WebSocketClient != null) { WebSocketClient.Close(); + WebSocketClient = null; } else if (WebSocketServer != null) { From c889a3c68c555a729bdd2aba6a889d1f14b0609c Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 00:56:17 -0800 Subject: [PATCH 6/9] Added catch statement to close socket --- .../Runtime/NativeWebSocketClient.cs | 5 +++++ .../Runtime/WebSocketTransport.cs | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs b/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs index e1129d47..3b3898aa 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs @@ -63,6 +63,11 @@ public void Connect() public void Close(CloseStatusCode code = CloseStatusCode.Normal, string reason = null) { + if (Connection == null) + { + return; + } + if (ReadyState == WebSocketSharp.WebSocketState.Closing) { throw new InvalidOperationException("Socket is already closing"); diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs index fe87cc23..27e4c71d 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs @@ -97,7 +97,6 @@ public override void Shutdown() if (WebSocketClient != null) { WebSocketClient.Close(); - WebSocketClient = null; } else if (WebSocketServer != null) { From fa05873e55d9230c76e8f0a371fb5fa85b997a40 Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 01:02:05 -0800 Subject: [PATCH 7/9] Changed close on already closed to end quietly --- .../Runtime/NativeWebSocketClient.cs | 7 +------ .../Runtime/WebSocketTransport.cs | 2 +- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs b/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs index 3b3898aa..90ccca30 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs @@ -63,11 +63,6 @@ public void Connect() public void Close(CloseStatusCode code = CloseStatusCode.Normal, string reason = null) { - if (Connection == null) - { - return; - } - if (ReadyState == WebSocketSharp.WebSocketState.Closing) { throw new InvalidOperationException("Socket is already closing"); @@ -75,7 +70,7 @@ public void Close(CloseStatusCode code = CloseStatusCode.Normal, string reason = if (ReadyState == WebSocketSharp.WebSocketState.Closed) { - throw new InvalidOperationException("Socket is already closed"); + return; } try diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs index 27e4c71d..f00ecb62 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs @@ -93,7 +93,6 @@ public override void Send(ulong clientId, ArraySegment data, NetworkDelive public override void Shutdown() { - IsStarted = false; if (WebSocketClient != null) { WebSocketClient.Close(); @@ -102,6 +101,7 @@ public override void Shutdown() { WebSocketServer.Stop(); } + IsStarted = false; } public override bool StartClient() From 638fb810ca7bac52e10ac8b33c94c89be8753d95 Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 01:34:56 -0800 Subject: [PATCH 8/9] Fixed some errors with web socket client --- .../Runtime/WebSocketClientFactory.cs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs index 47a08dc4..5fbc96ea 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs @@ -10,8 +10,8 @@ namespace Netcode.Transports.WebSocket { public class WebSocketClientFactory { -#if UNITY_WEBGL - public static JSWebSocketClient Client = new JSWebSocketClient(); +#if (UNITY_WEBGL && !UNITY_EDITOR) + public static JSWebSocketClient Client; internal delegate void OnOpenCallback(); internal delegate void OnMessageCallback(IntPtr messagePointer, int messageSize); @@ -67,7 +67,8 @@ internal static void OnCloseEvent(int disconnectCode) public static IWebSocketClient Create(string url) { -#if UNITY_WEBGL +#if (UNITY_WEBGL && !UNITY_EDITOR) + Client = new JSWebSocketClient() _SetUrl(url); _SetOnOpen(OnOpenEvent); _SetOnMessage(OnMessageEvent); From 16e5c169f16d618bfbbe25525bacc4107e55b318 Mon Sep 17 00:00:00 2001 From: Nick Maltbie Date: Tue, 22 Nov 2022 01:36:53 -0800 Subject: [PATCH 9/9] Fixed small syntax error --- .../Runtime/WebSocketClientFactory.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs index 5fbc96ea..b7bad24d 100644 --- a/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs +++ b/Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs @@ -68,7 +68,7 @@ internal static void OnCloseEvent(int disconnectCode) public static IWebSocketClient Create(string url) { #if (UNITY_WEBGL && !UNITY_EDITOR) - Client = new JSWebSocketClient() + Client = new JSWebSocketClient(); _SetUrl(url); _SetOnOpen(OnOpenEvent); _SetOnMessage(OnMessageEvent);