4/10/2023 0 Comments Always online slackThe Slack desktop client builds and maintains an array of messages for each channel that you are a member of. While it can be convenient to have the world at your fingertips, at some point the client cannot - and should not - know about, or need to render, absolutely everything right away. With most teams having less than 100 people, there were still a relatively small number of channels, message traffic was somewhat low, and client load time was quite fast.Īs the size of the average Slack team increased, hotspots impacting performance in various areas became more evident. Originally, Slack’s browser-based web app could effectively load the entire model up front without any notable performance issues. The WebSocket connection is the transport layer for receiving real-time messages - whether messages sent from other users on the team, or model update messages that the client needs to update state(e.g., a user joins/leaves a channel, updates their profile, uploads or shares a file, and so on.) Early Days: Loading The Whole World (Or Almost All Of It) Up Front On startup, the client makes some initial API calls and connects to a Message Server via WebSocket. The client starts with an empty model, which gets populated by a combination of local cache (as applicable) and API calls. * The Slack real-time messaging app works in web browsers, and our installable desktop app also uses a web-based view of the same hence, “Desktop” is an interchangeable term for both. Messages (from members, or the server - e.g., join/leave events, profile updates etc.).Members (humans and bots comprising your team).Channels (Public, Private, and Direct Messages).There are many elements to the model, but here are a few: The Slack desktop client* builds and maintains a data model for the duration of your session. This round of improvements went live in mid-2016, but as performance is a continuous area of focus, there are always more plans in the pipeline. Topic highlights include avoiding and deferring work, adding smart preloading capabilities, the pitfalls of LocalStorage, and lessons learned while refactoring. This two-part series is about our work refactoring part of the Slack desktop client for performance. Whether doing magic with cards or a browser, it doesn’t hurt to have an ace up your sleeve. ♠️ Software performance is like a series of card tricks:
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |