Gateway proposal: CHANNEL_LIST_UPDATE #3271
Replies: 8 comments
-
I am getting this issue where my client freezes up as-well, I'm also in Tidal. |
Beta Was this translation helpful? Give feedback.
-
lol let's hope discord does something about this |
Beta Was this translation helpful? Give feedback.
-
Slightly off-topic: Updating guild role positions seems to send multiple guild role update events well. |
Beta Was this translation helpful? Give feedback.
-
Even though the max amount of roles is half that of channels, I've seen many large guilds with roles right up to the limit. It also has the same effect on the client, so it is potentially worth doing something about as well. |
Beta Was this translation helpful? Give feedback.
-
I can confirm this. It sometimes even breaks role order when moving a newly created role to the top of the list. |
Beta Was this translation helpful? Give feedback.
-
Can confirm, this is a pretty large issue that significantly affects user experience |
Beta Was this translation helpful? Give feedback.
-
Any update on this? Currently any attempt at mass modifying channels (in my case the positions in separate API calls) is very detrimental to clients and what looks like the API too from what I could tell. |
Beta Was this translation helpful? Give feedback.
-
Any update on this ? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Description
CHANNEL_LIST_UPDATE would contain either an array or object mapping channel IDs to their corresponding position when channels are moved in the list, depending on how the Discord client currently holds channel state.
Why This is Needed
Currently, if you move a channel in a big guild (with a lot of channels), the gateway spams CHANNEL_UPDATE events for all channels in-between channel with position 0 and the channel position of the channel being moved. This doesn't sound like an issue at first, but for big guilds with 100+ channels, this becomes a huge issue for members of the guild. Their client becomes unresponsive for a few seconds, sometimes up to a minute, even if they don't have the guild focussed - at worst, I've had to restart my client entirely.
I'm assuming Discord performs an O(n^2) operation or similar frontend-side when receiving these objects on the frontend, maybe it even checks the permissions against your member? I'm not sure exactly - but the one thing I know is that it's slow. I've even seen my Discord gateway session crash during testing.
Alternatives Considered
I'm assuming something could be done to the actual frontend to change how CHANNEL_UPDATEs are implemented, but I feel that it wouldn't be very scalable either. CHANNEL_LIST_UPDATE would be a future proof method.
Additional Details
Here is a video of me trying to move a channel in a big guild with gateway logs on: https://www.youtube.com/watch?v=buozCwGNLZk
You should be able to see how much the client lags when sending down those gateway events.
And here is a Tweet about the issue - you can see how many people experience this: https://twitter.com/phineyes/status/1309586592881926145
Beta Was this translation helpful? Give feedback.
All reactions