Skip to content

Commit 92ef5c7

Browse files
committed
Now only clients register message handlers and unregister them when disconnecting
1 parent 4c68282 commit 92ef5c7

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

Assets/BossRoom/Scripts/Shared/Infrastructure/PubSub/NetworkedMessageChannel.cs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,29 @@ public NetworkedMessageChannel(string name, int bufferSize)
3535

3636
public override IDisposable Subscribe(Action<T> handler)
3737
{
38-
if (NetworkManager.Singleton != null && NetworkManager.Singleton.CustomMessagingManager != null)
38+
if (NetworkManager.Singleton != null && NetworkManager.Singleton.IsListening)
3939
{
40-
if (!m_HasRegisteredHandler)
40+
if (!m_HasRegisteredHandler && NetworkManager.Singleton.IsClient)
4141
{
4242
NetworkManager.Singleton.CustomMessagingManager.RegisterNamedMessageHandler(m_Name, ReceiveMessageThroughNetwork);
4343
m_HasRegisteredHandler = true;
44+
NetworkManager.Singleton.OnClientDisconnectCallback += OnClientDisconnect;
4445
}
4546

4647
return base.Subscribe(handler);
4748
}
4849

50+
Debug.LogError("Cannot subscribe to NetworkedMessageChannel. NetworkManager is not initialized.");
4951
return null;
5052
}
5153

54+
void OnClientDisconnect(ulong clientId)
55+
{
56+
m_HasRegisteredHandler = false;
57+
NetworkManager.Singleton.OnClientConnectedCallback -= OnClientDisconnect;
58+
NetworkManager.Singleton.CustomMessagingManager.UnregisterNamedMessageHandler(m_Name);
59+
}
60+
5261
public override void Publish(T message)
5362
{
5463
if (NetworkManager.Singleton.IsServer)

0 commit comments

Comments
 (0)