# TopicsController ## Overview `TopicsController` is a utility class for managing topic-based subscriptions in real-time applications. It handles subscribing to topics, listening for specific events, and managing subscription lifecycles. ## API Reference ### Constructor ```javascript const topicsController = new TopicsController(client) ``` | Parameter | Type | Description | |-----------|------|-------------| | client | Object | RTEngine client | ### Properties | Property | Type | Description | |----------|------|-------------| | subscribed | Set | Stores currently subscribed topics | ### Methods #### on(topic, event, callback) Registers a callback for a specific event on a given topic. ```javascript topicsController.on("chat/room1", "message", (data, payload) => { console.log("Message received:", data) }) ``` | Parameter | Type | Description | |-----------|------|-------------| | topic | string | Topic to associate the event with | | event | string | Name of the event to listen for | | callback | Function | Function to execute when the event occurs on the topic | #### subscribe(topic) Subscribes to a specific topic. ```javascript await topicsController.subscribe("chat/room1") ``` | Parameter | Type | Description | |-----------|------|-------------| | topic | string | Topic to subscribe to | | Returns | Promise | Resolves to true when subscription is complete | #### unsubscribe(topic) Unsubscribes from a specific topic. ```javascript await topicsController.unsubscribe("chat/room1") ``` | Parameter | Type | Description | |-----------|------|-------------| | topic | string | Topic to unsubscribe from | | Returns | Promise | Resolves to true when unsubscription is complete | #### unsubscribeAll() Unsubscribes from all currently subscribed topics. ```javascript await topicsController.unsubscribeAll() ``` | Returns | Promise | Resolves to true when all unsubscriptions are complete | #### regenerate() Refreshes all current subscriptions by unsubscribing and resubscribing. ```javascript await topicsController.regenerate() ``` | Returns | Promise | Resolves to true when regeneration is complete | ## Basic Usage Example ```javascript // Initialize const topicsController = new TopicsController(realTimeClient) // Subscribe to a topic await topicsController.subscribe("notifications") // Listen for events on that topic topicsController.on("notifications", "new", handleNewNotification) // Clean up when done await topicsController.unsubscribe("notifications") // Or unsubscribe from everything await topicsController.unsubscribeAll() ```