Repository navigation
A Distributed Authority session created by a WebGL build cannot be joined by any peer #4111
Description
Description
The WebGL host itself is fine: ISession.State == Connected, ISession.Network.State == Started,
NetworkManager.IsListening == true, and it is correctly a client of the CMB service
(isServer=False, isClient=True, UseCMBService=True).
The joining peer opens the relay WebSocket and exchanges frames in both
directions once per second for the whole attempt, but NetworkManager.IsConnectedClient never
becomes true. After MaxConnectAttempts NGO shuts the client down and the SDK reports
SessionError.NetworkManagerStartFailed.
The same WebGL build joins an Editor-hosted session without any problem, and the same code works
in Multiplayer Play Mode. Only sessions hosted by a WebGL build refuse peers.
Reproduce Steps
- Configure per Distributed authority and WebGL quickstart:
DistributedAuthorityTransporton the
NetworkManager, Use Web Sockets enabled. - Host:
var options = new SessionOptions { MaxPlayers = 4 }
.WithDistributedAuthorityNetwork()
.WithNetworkOptions(new NetworkOptions { RelayProtocol = RelayProtocol.WSS });
ISession session = await MultiplayerService.Instance.CreateSessionAsync(options);- Build for WebGL (release), open in localhost browser A, create the session, note
session.Code. - Open the same build in localhost browser B.
- Join from B:
var joinOptions = new JoinSessionOptions()
.WithNetworkOptions(new NetworkOptions { RelayProtocol = RelayProtocol.WSS });
ISession session = await MultiplayerService.Instance.JoinSessionByCodeAsync(code, joinOptions);
// never returnsSame result with JoinSessionByIdAsync and MatchmakeSessionAsync(QuickJoinOptions, SessionOptions).
Actual Outcome
JoinSessionByCodeAsync never returns. The lobby join itself succeeds — a second attempt from the
same client returns SessionException: player is already a member of the lobby.
Joining client:
Unity Transport: Connecting to wss://4296532389410631913.us-central1.relay.uf.unity3d.com:37011/. no Netcode connection
[Multiplayer]: GameObjectsNetcodeNetworkHandler.StopAsync: Failed to stop session: session was never started.
AddingSessionFailed — NetworkManagerStartFailed: Failed to start the network manager
Expected Outcome
The peer connects and JoinSessionByCodeAsync returns a session with IsConnectedClient == true,
as it does when the host is the Editor.
Environment
- OS: macOS
- Unity Version: 6000.5.4f1
- Netcode Version: 2.13.1,
com.unity.services.multiplayer2.2.4,com.unity.transport6.5.0 - Netcode Topology: Distributed Authority
- Unitask: 2.5.11
Additional Context
| SessionOwner | client | Result |
| Editor | Editor (Multiplayer Play Mode) | works |
| Editor | WebGL build | works |
| WebGL build | Editor | fails |
| WebGL build | WebGL build | fails |
Activity
EmandM commentedon Aug 7, 2026
Hello! Thank you for reporting this. Unfortunately
com.unity.services.multiplayeris not maintained from this repository. Would it be possible for you to report this issue through the Report a bug menu in the editor? If you share the case number here we can expedite the issue to the correct internal team.github-actions commentedon Aug 22, 2026
This issue has been automatically marked as stale because it has been awaiting response for over 2 weeks without any activity.
Please update the issue with any new information or it may be closed in 2 weeks.
github-actions commentedon Sep 5, 2026
This issue has been automatically closed because it has been stale for 2 weeks without any activity. Feel free to reopen if you have new information to add.