IP Library Granted Patent US 10,547,466
Granted Patent B2
US 10,547,466 · App. 15/990,454 · Granted Jan 28, 2020

Multiplexing message distribution within group-based communication system

Inventors: Mark Christian (San Francisco, CA); Cyrus Katrak (San Francisco, CA)
Assignee: Slack Technologies, Inc.
H04L12/185H04L12/189H04L65/4076H04W4/06
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,547,466
App. No.
15/990,454
Granted
Jan 28, 2020
Kind
B2
Abstract

Various embodiments are directed to message distribution protocols for a group-based communication platform, in which messages exchanged within a plurality of individual communication channels are provided to client devices via a single websocket connection for each client device. The messages are provided together with associated correspondence tags identifying communication channels in which the messages are exchanged, and the client device disseminates those messages for display in appropriate communication-channel-specific display windows based at least in part on the correspondence tags transmitted with the messages.

Claims (67)

1. A message distribution system for disseminating messages to client devices in association with a communication platform, the system comprising:

one or more message distribution servers configured for directing messages shared within communication channels to client devices; and

at least one multiplexer configured to:

maintain a websocket connection with a client device of the plurality of client devices;

maintain a plurality of backend websocket connections with the one or more message distribution servers, wherein each of the plurality of backend websocket connections corresponds to a communication channel; and

transmit a plurality of messages shared within respective communication channels from the one or more message distribution servers to the client device via the websocket connection, wherein each of the plurality of messages comprises a correspondence tag identifying a respective communication channel for display of the respective message on the client device within a display window corresponding to the communication channel, wherein each display window is displayed within a communication channel interface displayed via a display device of the client device.

2. The message distribution system of claim 1 , wherein a message of the plurality of messages comprises a plurality of correspondence tags identifying a plurality of communication channels for display of the respective message.

3. The message distribution system of claim 1 , wherein the multiplexer is further configured to:

receive an authentication token from the client device identifying a plurality of communication channels subscribed to by the client device; and

transmit a plurality of messages shared within subscribed communication channels from the one or more message distribution servers to the client device via the websocket connection.

4. The message distribution system of claim 1 , wherein the multiplexer is further configured to:

receive a plurality of join request messages from the client device, wherein each join request identifies a communication channel to be joined by the client device; and

transmit a plurality of messages shared within the joined communication channels from the one or more message distribution servers to the client device via the websocket connection.

5. The message distribution system of claim 1 , wherein maintaining the websocket connection comprises:

initializing the websocket connection in response to a first trigger event to enable transmission of messages to the client device;

closing the websocket connection in response to a second trigger event; and

storing a plurality of messages in a buffer memory while the websocket connection is closed, such that the plurality of messages stored in the buffer memory are transmitted to the client device upon initialization of the websocket connection.

6. The message distribution system of claim 5 , wherein the first trigger event is selected from: a predetermined time or receipt of a query from the client device.

7. A method for multiplexing messages disseminated to client devices within communication channels in association with a communication platform, platform, the method comprising:

maintaining a websocket connection with a client device in association with a communication platform;

maintaining a plurality of backend websocket connections with one or more message distribution servers, wherein the plurality of backend websocket connections each correspond to a communication channel; and

transmitting a plurality of messages shared within respective communication channels from the one or more message distribution servers to the client device via the websocket connection, wherein each of the plurality of messages comprises a correspondence tag identifying a respective communication channel for display of the respective message on the client device within a display window corresponding to the communication channel, wherein each display window is displayed within a communication channel interface displayed via a display device of the client device.

8. The method of claim 7 , wherein a message of the plurality of messages comprises a plurality of correspondence tags identifying a plurality of communication channels for display of the respective message.

9. The method of claim 7 , further comprising:

receiving an authentication token from the client device identifying a plurality of communication channels subscribed to by the client device; and

transmitting a plurality of messages shared within subscribed communication channels from the one or more message distribution servers to the client device via the websocket connection.

10. The method of claim 7 , further comprising:

receiving a plurality of join request messages from the client device, wherein each join request identifies a communication channel to be joined by the client device; and

transmitting a plurality of messages shared within the joined communication channels to the client device via the websocket connection.

11. The method of claim 7 , wherein maintaining the websocket connection comprises:

initializing the websocket connection in response to a first trigger event to enable transmission of messages to the client device;

closing the websocket connection in response to a second trigger event; and

storing a plurality of messages in a buffer memory while the websocket connection is closed, such that the plurality of messages stored in the buffer memory are transmitted to the client device upon initialization of the websocket connection.

12. The method of claim 11 , wherein the first trigger event is selected from: a predetermined time or receipt of a query from the client device.

13. A client device for displaying messages exchanged within communication channels associated with a communication platform, the client device comprising:

one or more memory storage areas;

a display device; and

one or more processors collectively configured to:

maintain a first websocket connection to at least one multiplexer, wherein the at least one multiplexer is configured to maintain a plurality of backend websocket connections with the one or more message distribution servers and the plurality of backend websocket connections each correspond with a communication channel;

receive a plurality of messages from the communication platform via the first websocket connection, wherein each of the plurality of messages comprise a correspondence tag identifying a respective communication channel for display of the respective message on the client device within a display window corresponding to the communication channel; and

display, within a communication channel interface displayed via the display device, the received plurality of messages within respective display windows based at least in part on the correspondence tags associated with the messages.

14. The client device of claim 13 , wherein displaying the received plurality of messages comprises:

providing each of the plurality of messages to each of a plurality of display windows; and

filtering the plurality of messages at each display window based at least in part on the correspondence tags to store and display relevant messages at each respective display window.

15. The client device of claim 13 , wherein displaying the received plurality of messages comprises:

providing each of the plurality of messages to respective display windows based at least in part on the correspondence tags associated with the messages; and

displaying the messages received at each display window.

16. The client device of claim 13 , wherein maintaining the websocket connection comprises:

transmitting a query to the communication platform; and

initializing the websocket connection to enable transmission of messages in response to the query.

17. A method for displaying messages exchanged within communication channels associated with a communication platform via a client device, the method comprising:

maintaining a first websocket connection to at least one multiplexer, wherein the at least one multiplexer is configured to maintain a plurality of backend websocket connections with the one or more message distribution servers and the plurality of backend websocket connections each correspond with a communication channel;

receiving a plurality of messages from the communication platform via the first websocket connection, wherein each of the plurality of messages comprise a correspondence tag identifying a respective communication channel for display of the respective message on the client device within a display window corresponding to the communication channel;

displaying, within a communication channel interface displayed via a display device of the client device, the received plurality of messages within respective display windows based at least in part on the correspondence tags associated with the messages.

18. The method of claim 17 , wherein displaying the received plurality of messages comprises:

providing each of the plurality of messages to each of a plurality of display windows; and

filtering the plurality of messages at each display window based at least in part on the correspondence tags to store and display relevant messages at each respective display window.

19. The method of claim 17 , wherein displaying the received plurality of messages comprises:

providing each of the plurality of messages to respective display windows based at least in part on the correspondence tags associated with the messages; and

displaying the messages received at each display window.

20. The method of claim 17 , wherein maintaining the websocket connection comprises:

transmitting a query to the communication platform; and

initializing the websocket connection to enable transmission of messages in response to the query.

21. A computer program product for disseminating messages to client devices in association with a communication platform, the computer program product comprising at least one non-transitory computer-readable storage medium having computer-readable program code portions stored therein, the computer-readable program code portions comprising an executable portion configured to:

maintain a websocket connection with a client device in association with a communication platform;

maintain a plurality of backend websocket connections with one or more message distribution servers, wherein the plurality of backend websocket connections each correspond to a communication channel; and

transmit a plurality of messages shared within respective communication channels from the one or more message distribution servers to the client device via the websocket connection, wherein each of the plurality of messages comprises a correspondence tag identifying a respective communication channel for display of the respective message on the client device within a display window corresponding to the communication channel, wherein each display window is displayed within a communication channel interface displayed via a display device of the client device.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 18, 2023
From: SLACK TECHNOLOGIES, LLC
To: SALESFORCE, INC.
Reel/Frame 064642/0564 →
MERGER Recorded Jul 29, 2021
From: SLACK TECHNOLOGIES, INC.
To: SLACK TECHNOLOGIES, LLC
Reel/Frame 057475/0404 →
RELEASE OF SECURITY INTEREST IN PATENT COLLATERAL AT REEL/FRAME NO. 49332/0349 Recorded Jul 19, 2021
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 057649/0882 →
PATENT SECURITY AGREEMENT Recorded May 30, 2019
From: SLACK TECHNOLOGIES, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 049332/0349 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 31, 2018
From: CHRISTIAN, MARK; KATRAK, CYRUS
To: SLACK TECHNOLOGIES, INC.
Reel/Frame 046768/0554 →
Continuity (1)
Related Publication 20190363899A1 · Nov 28, 2019