Skip to content

Commit c7246c7

Browse files
fix: WebSocketTransport Re-use and Compatibility (#188)
* 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) * Updated web socket transport to not use static fields * Reset started value on disconnect * Fixed the flag for is started on shutdown * Reset web socket client on shutdown * Added catch statement to close socket * Changed close on already closed to end quietly * Fixed some errors with web socket client * Fixed small syntax error
1 parent f8944ff commit c7246c7

File tree

4 files changed

+13
-11
lines changed

4 files changed

+13
-11
lines changed

Transports/com.community.netcode.transport.websocket/Runtime/JSWebSocketClient.jslib

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ var LibraryWebSocket = {
3939
}
4040

4141
if (state.onOpen) {
42-
Runtime.dynCall('v', state.onOpen, []);
42+
Module['dynCall_v'](state.onOpen);
4343
}
4444
};
4545

@@ -59,7 +59,7 @@ var LibraryWebSocket = {
5959
HEAPU8.set(dataBuffer, buffer);
6060

6161
try {
62-
Runtime.dynCall('vii', state.onMessage, [buffer, dataBuffer.length]);
62+
Module['dynCall_vii'](state.onMessage, buffer, dataBuffer.length);
6363
} finally {
6464
_free(buffer);
6565
}
@@ -78,7 +78,7 @@ var LibraryWebSocket = {
7878
stringToUTF8(msg, msgBuffer, msgBytes);
7979

8080
try {
81-
Runtime.dynCall('vi', state.onError, [msgBuffer]);
81+
Module['dynCall_vi'](state.onError, msgBuffer)
8282
} finally {
8383
_free(msgBuffer);
8484
}
@@ -91,7 +91,7 @@ var LibraryWebSocket = {
9191
}
9292

9393
if (state.onClose) {
94-
Runtime.dynCall('vi', state.onClose, [ev.code]);
94+
Module['dynCall_vi'](state.onClose, ev.code)
9595
}
9696
};
9797
},

Transports/com.community.netcode.transport.websocket/Runtime/NativeWebSocketClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public void Close(CloseStatusCode code = CloseStatusCode.Normal, string reason =
7070

7171
if (ReadyState == WebSocketSharp.WebSocketState.Closed)
7272
{
73-
throw new InvalidOperationException("Socket is already closed");
73+
return;
7474
}
7575

7676
try

Transports/com.community.netcode.transport.websocket/Runtime/WebSocketClientFactory.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ namespace Netcode.Transports.WebSocket
1010
{
1111
public class WebSocketClientFactory
1212
{
13-
#if UNITY_WEBGL
14-
public static JSWebSocketClient Client = new JSWebSocketClient();
13+
#if (UNITY_WEBGL && !UNITY_EDITOR)
14+
public static JSWebSocketClient Client;
1515

1616
internal delegate void OnOpenCallback();
1717
internal delegate void OnMessageCallback(IntPtr messagePointer, int messageSize);
@@ -67,7 +67,8 @@ internal static void OnCloseEvent(int disconnectCode)
6767

6868
public static IWebSocketClient Create(string url)
6969
{
70-
#if UNITY_WEBGL
70+
#if (UNITY_WEBGL && !UNITY_EDITOR)
71+
Client = new JSWebSocketClient();
7172
_SetUrl(url);
7273
_SetOnOpen(OnOpenEvent);
7374
_SetOnMessage(OnMessageEvent);

Transports/com.community.netcode.transport.websocket/Runtime/WebSocketTransport.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ namespace Netcode.Transports.WebSocket
88
{
99
public class WebSocketTransport : NetworkTransport
1010
{
11-
private static WebSocketServer WebSocketServer = null;
12-
private static IWebSocketClient WebSocketClient = null;
13-
private static bool IsStarted = false;
11+
private WebSocketServer WebSocketServer = null;
12+
private IWebSocketClient WebSocketClient = null;
13+
private bool IsStarted = false;
1414

1515
[Header("Transport")]
1616
public string ConnectAddress = "127.0.0.1";
@@ -101,6 +101,7 @@ public override void Shutdown()
101101
{
102102
WebSocketServer.Stop();
103103
}
104+
IsStarted = false;
104105
}
105106

106107
public override bool StartClient()

0 commit comments

Comments
 (0)