Why are you calling TNManager.JoinChannel from an object that has a TNObject attached? TNManager.JoinChannel should be called from somewhere, but it doesn't need to be something with a TNObject. TNObjects are for network sync, and since you are not yet in a channel, there is nothing to sync. The correct order of things is to call TNManager.JoinChannel from either your Start() function or as an On Click notification, and it should not be in a script derived from TNBehaviour.
When you join a channel, OnNetworkJoinChannel is always called -- on all scripts. Have a look at TNAutoJoin script to see what it does inside. It's a script that makes it possible to automatically connect to a remote server and join a channel as soon as it starts.