Multi tenancy with Phoenix Channels

Before diving into the code to try to understand how the full system works, I want to know how hard it would be to make websockets & channels work with multiple pubsub servers.

Basically, the idea is to allow different clients to use their own channel names. Currently we have the client ID as a prefix to the channel name : "jwp:<client_id>:<name>" so we can direct connexions to our channel implementation (matching "jwp:*"). As the channel name is unique, it works well and different app do not have other apps messages. This is with the default Phoenix 1.5 setup.

Now, with multiple pubsub servers, it would be easyier to provide different channel implementations like "public:*", "private:*", "presence:*", "state:*".

I guess I can hack it some way, but is there a good way of doing it ? And how would it behave with distribution ?

Thank you.