This is a pretty simple bug but the explanation might look complex.
The problem: when I join the same channel twice, in two different tabs, as the same character, the first tab very quietly stops working right. I'll explain how. The second tab can be in the same browser, or it can be on an entirely different device (your pc and your mobile phone for example).
You might wonder "when would that ever happen?". Well, here's some examples:
- You get a PM. You click the toast. The PM opens in a new tab. You check your inbox in another tab. There's a notification about the PM there, as there would be. You click it. Now you have the same PM open in two tabs with the same character in the same browser.
- Alternately, you open that PM on your PC. Then you walk away and leave it open. You pull out your phone, and open the same PM from there. Now you have the same PM open on your desktop PC and your mobile phone.
- You try to have two characters in the same chat simultaneously. This necessarily means joining the same chat twice, and the second tab will default to whatever character you chose in the first tab.
Here's the reproduction steps. Let's pretend you have Fred and George for characters. (George will be relevant later.)
- Open tab A. Join a channel, wait to connect. Have Fred active.
- In tab A: post a message as Fred. It will succeed.
- Open tab B. Join a channel, wait to connect. Fred will still be active.
So far so good. You can post as Fred in both tabs. Things are a little wonky now though. Tab B has "taken over" in a sense, and we can use tab B to silently remove Fred from the chat.
By silently removing Fred, that means: Fred disappears from the character list, you can't post as him anymore in tab A — if you try, you get an error message saying "This action requires that you connect to the session with connectToRoleplay first." Tab A will never ever realise this has happened, consider itself disconnected, inform you anything's wrong (until you try to post something), or attempt to reconnect Fred. At least, not in the few minutes I waited to see. Naturally tab A will attempt reconnect if your internet connection is interrupted briefly.
So, here's how we silently remove Fred. Starting from those reproduction steps:
- If you close tab B, Fred's silently removed from the channel. You can no longer talk as him in tab A.
- If you change character in tab B to George, Fred is silently removed, and George joins. You can no longer talk as Fred in tab A. You can talk just fine as George in tab B.
The same won't work from tab A however:
- If you close tab A, Fred stays in the channel. You can talk as him in tab B.
- If you change character in tab A to George, Fred stays connected, and George joins. You can chat as George in tab A, and as Fred in tab B.
That's it, that's the bug.